取三个包含NA的变量的平均值,以使用dplyr创建新变量

时间:2019-07-30 09:43:47

标签: r 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的数字   另外:警告消息:如果(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))

但这给了我同样的错误。

有人可以建议如何解决此问题吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

您可以使用hablar中的row_mean_,它会逐行显示,而忽略丢失。

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