如何将一个数据帧组成多个数据帧

时间:2014-11-16 18:37:13

标签: r dataframe

所以我试图将一个数据帧拆分成多个。我目前有:

y <- data.frame(day=c('1','1','2','2'),amount=c(1,2,3,4))

for(i in 1:2){
    i <- as.character(i)
    for(j in 1:4){
        if (grep(i, y$day, value = TRUE) > 0){
            assign(paste0('df', i)) <- rbind(assign(paste0('df', i)),y[j])
        }
    }
}

然后它给我一个错误和警告说:

assign(paste0("df", i)) :

中的错误

缺少参数“value”,没有默认值

另外:

警告讯息:

  

在if(grep(i,y $ day,value = TRUE)&gt; 0){:条件有长度&gt;   1,只使用第一个元素

我似乎无法找到应该是什么价值或放在哪里。

1 个答案:

答案 0 :(得分:3)

除非你正在建立一个新的环境,否则我会避开assign。如果您尝试按天拆分,则可以使用split

y <- data.frame(day=c('1','1','2','2'),amount=c(1,2,3,4))
split(y, y$day)
# $`1`
#   day amount
# 1   1      1
# 2   1      2
#
# $`2`
#   day amount
# 3   2      3
# 4   2      4

如果您希望在全球环境中将它们分配到自己的数据框(不推荐),则可以使用list2env

s <- setNames(split(y, y$day), paste0("df", unique(y$day)))
list2env(s, globalenv())

现在,您在全球环境中拥有数据框df1df2

df1
#   day amount
# 1   1      1
# 2   1      2
df2
#   day amount
# 3   2      3
# 4   2      4