[英]Isolate data frames from a spreadsheet to create a list
如何從大型數據電子表格中隔離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
我希望Group1的所有數據(行2至4)為dataframe1,Group2的數據(行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
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從組創建各種列表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.