在R中绘制一定大小的分层样本

时间:2016-12-09 09:31:07

标签: r

所以我有一个数据集,我希望以某种方式(5组)的概率将其分层分为Active / Control组。

在第一步中,我每组抽取100个随机样本:

library(plyr)
sample <- ddply(DF,.(prob_group),function(x) x[sample(nrow(x),100),])

table(sample$prob_group)

Output:
0-2 02-04 04-06 06-08   08- 
100   100   100   100   100 

之后,在第二步中,我将样本分成两组,大小相等:

library(dplyr)
set.seed(1)
out2 <- sample %>%
  group_by('X1', 'X2', 'X3', 'X4', 'X5', 
           'X6', 'X7', 'X8','X9', 'prob_group') %>%
  sample_n(250)
active <- out2

control <- subset(sample, !(sample$client_id %in% active$client_id))

但是现在我每组都没有50人。

我理解为什么,但我想知道是否有办法告诉R我想保持相同的尺寸。

table(active$prob_group)    
0-2 02-04 04-06 06-08   08- 
45    51    56    49    49 

table(control$prob_group)  
0-2 02-04 04-06 06-08   08- 
55    49    44    51    51 

1 个答案:

答案 0 :(得分:1)

你接近解决方案:

library(dplyr)
group_n <- 5
group_size <- 100

df <- data.frame(group=sample(rep(1:group_n,group_size)))
table(df$group)

active <- df %>% group_by(group) %>% sample_n(group_size/2)
table(active$group)