如何从大型数据电子表格中隔离R中的数据框,并从隔离的数据框中创建列表?
例如,我在不同州的不同组销售的苹果销售数据的格式为:
> data
1 NSW VIC QLD
2 Group1 2013 500 501 985
3 2014 601 520 999
4 2015 410 435 894
5 Group2 2013 508 501 806
6 2014 694 780 899
7 Group3 2013 305 501 985
8 2014 122 440 704
9 2015 210 235 523
我希望第1组(第2行到第4行)的所有数据都为dataframe1, 来自第2组的数据(第5至6行)为dataframe2, Group3(第7至9行)中的数据变为dataframe3等。
然后我列出一个清单:
data.list <- list(dataframe1,dataframe2,dataframe3, ....)
由于每个数据帧的行数可能不同,所以我无法执行一个循环,即每x数行都生成一个数据帧。基于包含“组”隶属关系的第一列将原始数据集分离为单个数据帧的最佳方法是什么?
我想创建一个看起来像这样的列表:
> data.list
[[Group1]]
NSW VIC QLD
1 2013 500 501 985
2 2014 601 520 999
3 2015 410 435 894
[[Group2]]
NSW VIC QLD
1 2013 508 501 806
2 2014 694 780 899
[[Group3]]
NSW VIC QLD
1 2013 305 501 985
2 2014 122 440 704
3 2015 210 235 523
答案 0 :(得分:0)
df <- structure(list(group = structure(c(2L, 1L, 1L, 3L, 1L, 4L, 1L,
1L), .Label = c("", "Group1", "Group2", "Group3"), class = "factor"),
year = c(2013L, 2014L, 2015L, 2013L, 2014L, 2013L, 2014L,
2015L), NSW = c(500L, 601L, 410L, 508L, 694L, 305L, 122L,
210L), VIC = c(501L, 520L, 435L, 501L, 780L, 501L, 440L,
235L), QLD = c(985L, 999L, 894L, 806L, 899L, 985L, 704L,
523L)), class = "data.frame", row.names = c(NA, -8L))
df_list <- split(df, as.factor(df$group))
split将帮助您使用baseR从组中创建各种列表