我有一个大的data.frame,我想通过变量ID进行子集化。 data.frame是100,000行长。有100个ID值。
是否有任何直接的编写函数的方法可以为所有ID值创建唯一的data.frame子集?
我知道怎么一个接一个地做。例如:
library(dplyr)
subset1 <- select(filter(data.frame, ID == 1), c(Column1, Column2))
我不想手动更改ID的值来创建100个新子集。有没有办法我可以创建一个函数来实现这样的事情:
subset_IDNum <- select(filter(data.frame, ID == Num), c(Column1, Column2))
这样它就可以为所有ID值动态生成新的子集:subset_1,subset_2等?
解决方案1 - 编写for
循环:假设您希望单独创建subset_IDNum。
for (i in unique(df$ID)) {
assign(paste0("subset_ID", i),
select(filter(df, ID == i), c(Column1, Column2)))
}
通过调用subset_ID1
检索ID 1的数据框。
解决方案2 - 使用split
:假设您需要一个列表来收集所有子集(通常它更有效)。
subset_IDs <- split(df, df$ID)
通过调用subset_IDs$"1"
检索ID 1的数据框。