使用dplyr

时间:2018-01-22 01:32:12

标签: r dplyr

我知道我可以使用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)
}

1 个答案:

答案 0 :(得分:1)

因为您为cluster_ra中的randomizr函数提供了群集变量,所以您可以这样做

data <- 
data %>%
mutate(Z = cluster_ra(clust_var = clust_var))

没有必要group_by

注意:在randomizr版本0.8中,clust_var已被弃用,转而使用clusters