首页 > 解决方案 > 取三个包含 NA 的变量的平均值,以使用 dplyr 创建新变量

问题描述

我的数据集中有三个度量值,我试图将它们组合成一个新变量,该变量代表每一行的这三个变量的平均值(每行代表一个参与者)。原始三个变量中的每一个都包含 NA 值。

我已经尝试了下面的代码,我在此处将其应用于 R 中包含 NA 值(空气质量)的示例数据集:

airquality %>% mutate(New = mean(airquality$Solar.R,airquality$Ozone,airquality$Wind))

但我不断收到错误消息:

mean.default(airquality$Solar.R, airquality$Ozone, airquality$Wind) 中的错误:“trim”必须是长度为 1 的数字此外:警告消息:在 if (na.rm) x <- x[!is .na(x)] : 条件长度 > 1 并且只使用第一个元素

我也试过:

airquality %>% filter(!is.na(airquality$Solar.R,airquality$Ozone,airquality$Wind)) %>%  mutate(New = mean(airquality$Solar.R,airquality$Ozone,airquality$Wind))

但这给了我同样的错误。

谁能建议如何解决这个问题?

提前非常感谢!

标签: rdplyr

解决方案


您可以使用row_mean_from hablar,它在忽略缺失的情况下按行表示。

library(hablar)
airquality %>% 
  mutate(New = row_mean_(Solar.R, Ozone, Wind))

结果

    Ozone Solar.R Wind Temp Month Day        New
1      41     190  7.4   67     5   1  79.466667
2      36     118  8.0   72     5   2  54.000000
3      12     149 12.6   74     5   3  57.866667
4      18     313 11.5   62     5   4 114.166667
5      NA      NA 14.3   56     5   5  14.300000
6      28      NA 14.9   66     5   6  21.450000
7      23     299  8.6   65     5   7 110.200000

推荐阅读