【发布时间】:2018-06-19 12:10:16
【问题描述】:
(以下场景简化了我的实际情况)
我的数据来自村庄,我想用村庄变量来总结一个结果变量。
> data
village A Z Y
<chr> <int> <int> <dbl>
1 a 1 1 500
2 a 1 1 400
3 a 1 0 800
4 b 1 0 300
5 b 1 1 700
例如,我想仅使用Z==z 按村庄计算Y 的平均值。在这种情况下,我希望村庄“a”有 (500 + 400)/2 = 450,村庄“b”有 700。
请注意,实际情况比较复杂,我不能直接使用this answer,但是我需要将一个分组的tibble和一个全局变量(z)传递给我的函数。
z <- 1 # z takes 0 or 1
data %>%
group_by(village) %>% # grouping by village
summarize(Y_village = Y_hat_village(., z)) # pass a part of tibble and a global variable
Y_hat_village <- function(data_village, z){
# This function takes a part of tibble (`data_village`) and a variable `z`
# Calculate the mean for a specific z in a village
data_z <- data_village %>% filter(Z==get("z"))
return(mean(data_z$Y))
}
但是,我发现. 传递了整个 tibble,并且上面的代码为所有组返回了相同的值。
【问题讨论】:
-
我想你在找
do,你也可以考虑用split然后map