如何为指定条件动态生成新的data.frames

问题描述 投票:1回答:1

我有一个大的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等?

r function subset data-manipulation
1个回答
0
投票

解决方案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的数据框。

© www.soinside.com 2019 - 2024. All rights reserved.