如何在列表中添加/合并数据帧

时间:2015-05-15 09:56:42

标签: r merge

我使用以下for循环来读取7个csv文件并将它们添加到列表中。

list <- list()
l <- 1
for(i in 1:7){
      data <- read.csv(paste("file",i,".csv",sep=""),header=FALSE) 
      list[[l]] <- data 
      l <- l + 1
}

所以现在我有一个名为&#34; list&#34;的列表包含7个数据帧,对吗?

8个数据帧中的每一个都包含相同的三列(NAME,SURNAME,AGE)。 我现在想补充一下:

df <- dataframe(NAME,SURNAME,AGE) ## to each dataframe in the list.

有没有帮助?我的问题是,如何自动为列表中的所有7个对象实现这一目标!

2 个答案:

答案 0 :(得分:1)

如果&#39; lst&#39;有七个data.frames,想要&#39; rbind&#39;对于列表中每个数据集的第8个数据集,我们可以使用Map

 Map(rbind, lst, list(d1))

或使用lapply

lapply(lst, rbind, d1)

更新

如果&#39; lst&#39;长度为8,并希望使用第8个元素中的数据集对前7个元素进行rbind,然后就可以了

 Map(rbind, lst[-8], lst[8])

数据

set.seed(24)
lst <- lapply(1:7, function(i) as.data.frame(matrix(sample(0:10, 3*10, 
         replace=TRUE), ncol=3)))

set.seed(49)
d1 <- as.data.frame(matrix(sample(1:20, 3*10, replace=TRUE), ncol=3))

答案 1 :(得分:0)

或者,如果最终目标是确保所有8个CSV文件都成为一个data.frame:

SELECT `Date`, 
       SUM(Morning) AS Morning, 
       SUM(EveningQty) AS EveningQty, 
       SUM(Morning + EveningQty) AS Total
  FROM SomeTable
  GROUP BY `Date`