R:如何使用dplyr计算缺少值的每行的平均值

Ira*_*kli 3 r mean dplyr

我想计算包含缺失值的数据框中每行的多个列的均值,并将结果放在一个名为"means"的新列中.这是我的数据帧:

df <- data.frame(A=c(3,4,5),B=c(0,6,8),C=c(9,NA,1))
  A B  C
1 3 0  9
2 4 6 NA
3 5 8  1
Run Code Online (Sandbox Code Playgroud)

如果列没有缺失值,则下面的代码可以成功完成任务,例如A列和B列.

 library(dplyr)
 df %>%
 rowwise() %>%
 mutate(means=mean(A:B, na.rm=T))

     A     B     C   means
  <dbl> <dbl> <dbl> <dbl>
1     3     0     9   1.5
2     4     6    NA   5.0
3     5     8     1   6.5
Run Code Online (Sandbox Code Playgroud)

但是,如果列缺少值,例如C,则会出现错误:

> df %>% rowwise() %>% mutate(means=mean(A:C, na.rm=T))
Error: NA/NaN argument
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想用dplyr实现它.

eip*_*i10 7

df %>% 
  mutate(means=rowMeans(., na.rm=TRUE))
Run Code Online (Sandbox Code Playgroud)

.是一个"代词",它引用了df管道传输的数据框mutate.

  A B  C    means
1 3 0  9 4.000000
2 4 6 NA 5.000000
3 5 8  1 4.666667
Run Code Online (Sandbox Code Playgroud)

您还可以使用所有常用方法(列名,索引grep等)仅选择要包括的特定列.

df %>% 
  mutate(means=rowMeans(.[ , c("A","C")], na.rm=TRUE))
Run Code Online (Sandbox Code Playgroud)
  A B  C means
1 3 0  9     6
2 4 6 NA     4
3 5 8  1     3
Run Code Online (Sandbox Code Playgroud)