按n个因子拆分R数据帧

按n个因子拆分R数据帧,r,split,dataframe,R,Split,Dataframe,我有一个数据帧,我需要按因子组将其拆分为更小的数据帧,以便对表格和图形进行分页 例如,假设我想将菱形数据集拆分为每个数据帧具有2个切割级别的迷你数据帧。这意味着一个包含2个数据帧和2个级别的列表,1个数据帧和1个级别的列表 levels(diamonds$cut) # "Fair" "Good" "Very Good" "Premium" "Ideal" 我正试图使用split()来完成这项任务分割(钻石,钻石$cut)按因子将集合分割为数据帧,但是如何将其按2、3或

我有一个数据帧,我需要按因子组将其拆分为更小的数据帧,以便对表格和图形进行分页

例如,假设我想将
菱形
数据集拆分为每个数据帧具有2个切割级别的迷你数据帧。这意味着一个包含2个数据帧和2个级别的列表,1个数据帧和1个级别的列表

levels(diamonds$cut)
# "Fair"      "Good"      "Very Good" "Premium"   "Ideal" 
我正试图使用
split()
来完成这项任务<代码>分割(钻石,钻石$cut)按因子将集合分割为数据帧,但是如何将其按2、3或n个级别分组?类似于
分割(数据,代表(1:round(nrow(data)/10),每个=10))
在每个因子只有一行时工作,但我使用的是“long”数据帧,使因子沿数据帧的长度分布

问题很接近,但使用了一个我没有的数字变量

通过使用:

diamonds$splt <- c("B","A")[diamonds$cut %in% c("Very Good","Premium","Ideal") + 1L]

我们使用
gl
创建的分组变量
拆分
切割变量的
级别
,然后使用%
中的
%对每个
列表
元素中的“菱形”进行子集化

v1 <- levels(diamonds$cut)
n <- 2
lapply(split(v1, as.numeric(gl(length(v1), n, length(v1)))), 
         function(x) diamonds[diamonds$cut %in% x,])
v1简单解决方案:

df_splt<-split(diamonds,ceiling(as.numeric(diamonds$cut)/2))

@阿克伦:那不是按行分割吗?我正在处理一个融化的数据集(
restrape2::melt
),因此,如果有n个级别,我尝试拆分的因子级别将分布在每n行上。很好。应该注意的是,2可以替换为变量。
df_splt<-split(diamonds,ceiling(as.numeric(diamonds$cut)/2))
 >table(df_splt[[1]]$cut)

 Fair      Good Very Good   Premium     Ideal 
 1610      4906         0         0         0