基于日期列从单个数据帧创建n个子集数据帧的堆栈

时间:2015-08-31 07:17:26

标签: r

我需要根据日期列(例如 - " 2015年8月"以月 - 年格式)从单个大df中创建一组子集数据框。它应该类似于子集函数,除了要形成的子集dfs的计数应该根据日期列上的可用值动态改变

所有子集数据框都需要具有相似的结构,这样每个子集df的日期列值将是一个且相同。

假设,如果我的大df目前有10个月的数据,我现在需要10个子集数据帧,如果我下个月运行相同的命令(11个月的基础数据),则需要11个dfs。

我尝试过类似下面的内容。但是每次迭代后,子集subdf_i都会被覆盖。因此,我只得到一个子集df atlast,其中包含月份列的最后一个值。

我认为相应地为月份列的所有45个唯一值创建了45个子集dfs,如subdf_1subdf_2,...和subdf_45

uniqmnth <- unique(df$mnth)

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

    subdf_i <- subset(df, mnth == uniqmnth[i])

    i==i+1

}

我希望子集函数中应该有一些选项,或者任何循环都可以。我是R的初学者,不知道如何达到这个目标。

1 个答案:

答案 0 :(得分:0)

我认为完美的解决方案可能是对迭代变量i使用assign(),以附加在45个子集的每个子集的名称中。感谢我朋友的说明。这是避免在每次循环运行时覆盖子集数据帧的解决方案。

uniqmnth <- unique(df$mnth)

for (i in 1:length(uniqmnth)){
  assign(paste("subdf_",i,sep=""), subset(df, mnth == uniqmnth[i])) i==i+1 
}