我试图根据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