我有一个大的数据集,我想对其进行修改以使其在比例上看起来与另一个数据集“相似”。
所以目标数据集具有像这样的变量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的初始比率。是否有办法在随机抽样中按层指定总组的百分比?
这样的东西? (由于数据集较小,我使用了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