我正在尝试使用dplyr计算多个列的加权平均值。目前,我坚持使用summary_each,对我来说,这似乎是解决方案的一部分。这是一些示例代码:
library(dplyr)
f2a <- c(1,0,0,1)
f2b <- c(0,0,0,1)
f2c <- c(1,1,1,1)
clustervar <- c("A","B","B","A")
weight <- c(10,20,30,40)
df <- data.frame (f2a, f2b, f2c, clustervar, weight, stringsAsFactors=FALSE)
df
我正在寻找的是像
df %>%
group_by (clustervar) %>%
summarise_each(funs(weighted.mean(weight)), select=cbind(clustervar, f2a:f2c))
结果仅是:
# A tibble: 2 × 4
clustervar select4 select5 select6
<chr> <dbl> <dbl> <dbl>
1 A 25 25 25
2 B 25 25 25
我在这里想念什么?
最佳答案
您可以使用summarise_at
来指定要对哪些列进行操作:
df %>% group_by(clustervar) %>%
summarise_at(vars(starts_with('f2')),
funs(weighted.mean(., weight)))
#> # A tibble: 2 × 4
#> clustervar f2a f2b f2c
#> <chr> <dbl> <dbl> <dbl>
#> 1 A 1 0.8 1
#> 2 B 0 0.0 1
关于r - dplyr中多列的加权平均值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43602919/