【发布时间】:2021-12-08 05:58:17
【问题描述】:
我有一个数据框,其中包含一个名为“col0”的列和几个(超过 100 个)其他列(col1、col2、col3...)。我试图用 dplyr 有条件地总结它们(col0 和 weighted.mean 的总和),但它不起作用,因为它总结了列中的所有值。
我假设 if 语句后有偏差。
代码:
dt <- data.frame(col0 = c(1,2,3),
col1 = c(0.1,0.2,0.3),
col2 = c(0.2,0.3,0.4),
col3 = c(0.1,0.2,0.3),
col4 = c(0.2,0.3,0.4))
dt %>%
summarise(across(everything(), ~ if(any(names(.) != "col0"))
weighted.mean(., col0, na.rm = TRUE)
else sum(., na.rm = TRUE)))
结果:
col0 col1 col2 col3 col4
1 6 0.6 0.9 0.6 0.9
注意:Ronak Shah 建议的解决方案是正确的,但(无论出于何种原因)我必须在 weighted.mean 函数中明确定义 wt
【问题讨论】: