相关疑难解决方法(0)

将数据帧列表转换为一个数据帧

我有一些代码,在一个地方最终得到一个数据帧列表,我真的想转换为一个大数据帧.

我从之前的一个问题中得到了一些指示,这个问题试图做类似但更复杂的事情.

这是我开始的一个例子(为了说明,这是非常简化的):

listOfDataFrames <- vector(mode = "list", length = 100)

for (i in 1:100) {
    listOfDataFrames[[i]] <- data.frame(a=sample(letters, 500, rep=T),
                             b=rnorm(500), c=rnorm(500))
}
Run Code Online (Sandbox Code Playgroud)

我目前正在使用这个:

  df <- do.call("rbind", listOfDataFrames)
Run Code Online (Sandbox Code Playgroud)

r list dataframe

297
推荐指数
9
解决办法
17万
查看次数

将多个data.frames合并为一个带循环的data.frame

我想把merge几个data.frames合二为一data.frame.因为我有一个完整的文件列表,我试图用循环结构来做.

到目前为止,循环方法工作正常.然而,它看起来效率很低,我想知道是否有更快更容易的方法.

这是场景:我有一个包含多个.csv文件的目录.每个文件包含可用作合并变量的相同标识符.由于文件的大小相当大,我想把每个文件一次一个地读入R而不是一次读取所有文件.所以我得到了目录的所有文件,list.files并在前两个文件中读取.之后我用它merge来买一个data.frame.

FileNames <- list.files(path=".../tempDataFolder/")
FirstFile <- read.csv(file=paste(".../tempDataFolder/", FileNames[1], sep=""),
             header=T, na.strings="NULL")
SecondFile <- read.csv(file=paste(".../tempDataFolder/", FileNames[2], sep=""),
              header=T, na.strings="NULL")
dataMerge <- merge(FirstFile, SecondFile, by=c("COUNTRYNAME", "COUNTRYCODE", "Year"),
             all=T)
Run Code Online (Sandbox Code Playgroud)

现在我使用for循环将所有剩余的.csv文件和merge它们放入已存在的文件中data.frame:

for(i in 3:length(FileNames)){ 
ReadInMerge <- read.csv(file=paste(".../tempDataFolder/", FileNames[i], sep=""),
               header=T, na.strings="NULL")
dataMerge <- merge(dataMerge, ReadInMerge, by=c("COUNTRYNAME", "COUNTRYCODE", "Year"),
             all=T)
}
Run Code Online (Sandbox Code Playgroud)

即使它工作得很好我想知道是否有更优雅的方式来完成工作?

loops for-loop r

27
推荐指数
1
解决办法
3万
查看次数

在系统R中连接两个或多个数据帧

我的问题是如何在系统R中加入两个或多个数据帧?

例如:

我有两个数据框:

第一:

   x  y  z
1  3  2  4
2  4  5  7
3  5  6  8
Run Code Online (Sandbox Code Playgroud)

第二:

   x  y  z
1  1  1  1
2  4  5  7
Run Code Online (Sandbox Code Playgroud)

我需要这个:

   x  y  z
1  3  2  4
2  4  5  7
3  5  6  8
4  1  1  1
5  4  5  7
Run Code Online (Sandbox Code Playgroud)

我试图为每个向量使用append,如下所示:

for(i in 1:length(first)){

    mix[[i]]<-append(first[i], second[i])}
Run Code Online (Sandbox Code Playgroud)

f <-do.call(rbind,mix)

但它不像我需要的那样工作.我没有得到我的矩阵,我有一些不同的结构.

join r dataframe rbind

20
推荐指数
1
解决办法
2万
查看次数

如何将列表的元素合并到数据框中?在R

我有一个元素列表,像这样

[[1]]
[1] 9.623571 5.334566 7.266597 6.510794 4.301958

[[2]]
[1] 9.693326 9.015892 1.266178 8.547392 4.326199
Run Code Online (Sandbox Code Playgroud)

我想将它转换为数据帧,如下所示:

V1       V2       V3       V4       V5
9.623571 5.334566 7.266597 6.510794 4.301958
9.693326 9.015892 1.266178 8.547392 4.326199
Run Code Online (Sandbox Code Playgroud)

因此,列表条目内相同位置的所有元素都合并在同一列中.

它必须是与"rbind"相关的东西,因为结果就像在做:

rbind(list[[1]],list[[2]]...)
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将它应用于列表的所有条目.任何关于此的亮点都将受到赞赏.

非常感谢你提前.

蒂娜.

r list dataframe

3
推荐指数
2
解决办法
312
查看次数

标签 统计

r ×4

dataframe ×3

list ×2

for-loop ×1

join ×1

loops ×1

rbind ×1