控制比例时从data.frame采样[分层采样]
我有以下数据集控制比例时从data.frame采样[分层采样],r,sampling,R,Sampling,我有以下数据集 id1<-c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20) status<-c(1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2) df<-data.frame(id1,status) id1您可以尝试我的“splitstackshape”软件包中的分层功能: 或者,使用“dplyr”中的sample_frac: 这两种方法都将采用与原始分组变量成比例的分层样本(因此使用1
id1<-c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)
status<-c(1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2)
df<-data.frame(id1,status)
id1您可以尝试我的“splitstackshape”软件包中的分层
功能:
或者,使用“dplyr”中的sample_frac
:
这两种方法都将采用与原始分组变量成比例的分层样本(因此使用10/nrow(df)
,或等效地使用0.5
)。Quick question@Ananda Mahto。此采样方法将与replacement一起使用吗?@AliCivil,您可以使用replace参数指定它(默认值=FALSE-请参阅函数的帮助)。添加replace=TRUE
如果您想进行替换:分层(df,“status”,10/nrow(df),replace=TRUE)
。
library(splitstackshape)
stratified(df, "status", 10/nrow(df))
# id1 status
# 1: 5 1
# 2: 12 1
# 3: 2 1
# 4: 1 1
# 5: 6 1
# 6: 9 1
# 7: 16 2
# 8: 17 2
# 9: 18 2
# 10: 15 2
library(dplyr)
df %>%
group_by(status) %>%
sample_frac(10/nrow(df))