r中2层地层的随机选择

问题描述 投票:0回答:1

我有一个大的数据集,我想对其进行修改以使其在比例上看起来与另一个数据集“相似”。

所以目标数据集具有像这样的变量X的比例

'A' = 0.5,
'B'= 0.2,
'C'= 0.1
'D'= 0.2

而且我希望组变量的比率为2:1,以便每个trt的数据都有2个ctrl

我的数据看起来像这样:

 ID          GRP         X         Y
 1           ctrl         A        2
 2           ctrl         A        2
 3           ctrl         B        1
 4           trt          A        4

我可以使用此代码将其分为X和GRP相等的组:

DF%>% group_by(X, GRP) %>%sample_n(2500) 

但是我想获得GRP的2:1比率并保留X的初始比率。是否有办法在随机抽样中按层指定总组的百分比?

r random dplyr sample
1个回答
0
投票

这样的东西? (由于数据集较小,我使用了replace = TRUE

library(dplyr)
DF%>% 
  group_by(X, GRP) %>%
  mutate(prob = case_when(X == "A" ~ 0.5,
                          X == "B" ~ 0.2,
                          X == "C" ~ 0.1,
                          X == "D" ~ 0.2),
         prob = if_else(GRP == "ctrl", prob * 2, prob)) %>% 
  distinct(X, GRP, Y, .keep_all =  TRUE) %>% 
  ungroup() %>% 
  slice_sample(n = 10000, replace = TRUE, weight_by = prob) %>% 
  count(GRP, X) 

# A tibble: 3 x 3
  GRP   X         n
  <chr> <chr> <int>
1 ctrl  A      5203
2 ctrl  B      2102
3 trt   A      2695
© www.soinside.com 2019 - 2024. All rights reserved.