我試圖根據R中的多個條件將大數據框拆分爲更小的數據框。我希望這些數據框中的每一個根據它們被分割的變量來命名,但是由於有超過1660個新的「子」數據幀,所以我不能手動執行此操作。使用拆分在R中創建新的數據框,並根據變量條件進行重命名
整個數據幀的一個例子:
ID LENGTH GRADE CODE DURATION STATUS
1 1 A1 ABC Less than 10 Y
2 2 A1 ABC More than 10 Y
3 1 A1 DEF Less than 10 Y
4 2 A2 ABC Less than 10 Y
5 1 B1 ABC More than 10 Y
6 3 B2 DEF Less than 10 Y
有超過90萬的條目7分的變量被分成約1660非空基 - 我已經通過創建一個新的分組數據幀
發現這> Grouped_DF<- DF %>% group_by(LENGTH,GRADE,CODE,DURATION,STATUS,...)
> nrow(Grouped_Data)
[1] 1660
它由我所希望的組構成,但現在我想爲這些組中的每個組創建一個新的數據框,並將所有條目歸入每個組。
SplitGroups<-split(DF, with(DF, interaction(LENGTH,GRADE,CODE,DURATION,STATUS,..)))
產生以下列表:
> class(SplitGroups)
[1] "list"
> length(SplitGroups)
[1] 24480
輸出的一個例子:我已經使用分割函數試圖
> SplitGroups
$1.A1.ABC.Less Than 10.N`
# A tibble: 10 x 65
# Groups: ID [10]
# ... with 65 variables:
現在我想利用非空dataframes ,將它們重命名爲例如'1.A1.ABC.Less than 10.N'(或類似的東西)並將其存儲到全局環境中。
我知道這可能使用子集來完成,例如:
1.A1.ABC.LessThan10.N <- subset(DF, LENGTH==1 & GRADE=="A1" & CODE=="ABC" & .....)
等等,但是這不是必要的子集數有實際。
任何幫助,將不勝感激,謝謝。
'splitGroups < - splitGroups [sapply(splitGroups,nrow)> 0]'將刪除所有空的data.frames。將它存儲在列表中可能是更好的方法,因爲它更容易與數據框架系統地交互。看到這裏的[gregor的帖子](https://stackoverflow.com/questions/17499013/how-do-i-make-a-list-of-data-frames)上的一些技巧。 – lmo
我們可以使用'Filter(function(x)nrow(x)> 0,splitGroups)' – akrun