R 根据级别长度为类别变量中的级别选择相同数量的行

R 根据级别长度为类别变量中的级别选择相同数量的行,r,dataframe,subset,R,Dataframe,Subset,我有一个“主数据帧”,对一个分类变量有不同的观察,我想创建,比如说,20个其他平衡的子数据帧 对于这些新的子数据集,我希望保留变量x=0的所有行,并随机采样x=1的行,其中x=1的长度必须与x=0的长度相同 所以,如果我们有这样的东西: x <- c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0) y <- sample(1:25) df <- data.frame(x,y) # master dataframe x这

我有一个“主数据帧”,对一个分类变量有不同的观察,我想创建,比如说,20个其他平衡的子数据帧

对于这些新的子数据集,我希望保留变量x=0的所有行,并随机采样x=1的行,其中x=1的长度必须与x=0的长度相同

所以,如果我们有这样的东西:

x <- c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0) 
y <- sample(1:25) 
df <- data.frame(x,y) # master dataframe

x这将为您提供一个包含25个元素的列表,每个元素都是从原始元素中随机抽样的18个观察值(每个x值的9个)的数据帧

库(dplyr)
l%样品(尺寸=l)
})

这将为您提供一个包含25个元素的列表,每个元素都是从原始元素中随机抽样的18个观察值(每个x值的9个)的数据帧

库(dplyr)
l%样品(尺寸=l)
})

考虑按一个或多个因子对数据帧进行子集并对每个子集应用函数的方法

df_list <- by(df, df$x, function(sub)
   sub[sample(1:nrow(sub), length(which(df$x=='0'))),]
)

df_new <- do.call(rbind, df_list)

df_list考虑按一个或多个因子对数据帧进行子集并对每个子集应用函数的
by

df_list <- by(df, df$x, function(sub)
   sub[sample(1:nrow(sub), length(which(df$x=='0'))),]
)

df_new <- do.call(rbind, df_list)

df\u列表
group\u by
?它不是base R的一部分。您是否在返回列表的
lappy
中创建了一个列表?似乎是这样的
groupby
从哪里派生?它不是base R的一部分。您是否在
lappy
中创建了一个返回列表的列表?看起来是这样的