gpt4 book ai didi

不同规模的亚组内的随机化

转载 作者:行者123 更新时间:2023-12-01 01:40:20 26 4
gpt4 key购买 nike

我想将每个子组的一半分配给治疗条件,一半分配给对照组。当我的子组有奇数个记录时,可以任意分配最后一个。

我正在尝试在 dplyr 组中执行此操作并努力解决奇数/偶数。我试过这个:

set.seed(1)
library(dplyr)
mtcars %>%
group_by(cyl) %>%
mutate(group = case_when(
n() %% 2 == 0 ~ sample(rep(c("treatment", "control"), n() / 2)),
TRUE ~ sample(rep(c("treatment", "control"), ceiling(n() / 2)))[-1]
))

但我收到错误:

Error: TRUE ~ sample(rep(c("treatment", "control"), ceiling(n()/2)))[-1] must be length 10 or one, not 11



我也愿意使用 purrr如果这种方法更直接。

最佳答案

mtcars %>% 
group_by(cyl) %>%
mutate(group = sample(rep(c("treatment", "control"), ceiling(n()/2)), n()))
  • 对于偶数 n = 2k组中的行数,它会随机播放 k “治疗”和k “控制”值。
  • 对于奇数 n = 2k + 1 ,它采样 2k + 1来自 k + 1 的值“治疗”和k + 1 “控制”值。我相信这就是你所需要的。

  • 这当然可以推广到任意数量的组:
    mtcars %>% 
    group_by(cyl) %>%
    mutate(group = sample(rep(c("A", "B", "C"), ceiling(n()/3)), n())) %>%
    count(cyl, group)

    关于不同规模的亚组内的随机化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58647807/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com