我知道我可以使用randomizr使用cluster_ra进行集群随机分配,但是我遇到了错误,尝试使用dplyr在集群中随机分配 - help ie。编写一个在集群级别分配的函数然后计算/绑定平均值的差异(我认为我准确地做了)?这就是我所拥有的:
data <- readRDS("../dropbox/haircolorwithY.rds")
names(data)
我试图避免以下
clust_var <- with(data, paste(hair, color, sep = "_"))
data$clust_var <- clust_var
clust <- cluster_ra(clust_var = clust_var)
head(table(clust_var, clust))
并且仅使用dplyr,但是group_by是不准确的,因为它将数据帧拆分成簇,但我想要做的是在集群级别进行分配(即,在我折叠数据后将每个观察视为集群)然后将其合并到数据(内部连接是否准确?)
g1 <- function(data) {
d1 <- data %>%
group_by(clust) %>%
summarise(cluster_size = n(), (mean(Y[treat == 1]) -
mean(Y[treat == 0]))) %>%
arrange(cluster_size) %>%
mutate(z=sample(rep(0:1, each = n()/2), n(), replace = FALSE)) %>%
inner_join(???, data)
return(data)
}
答案 0 :(得分:1)
因为您为cluster_ra
中的randomizr
函数提供了群集变量,所以您可以这样做
data <-
data %>%
mutate(Z = cluster_ra(clust_var = clust_var))
没有必要group_by
。
注意:在randomizr
版本0.8中,clust_var
已被弃用,转而使用clusters