我想计算包含缺失值的数据框中每行的多个列的均值,并将结果放在一个名为"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实现它.
df %>%
mutate(means=rowMeans(., na.rm=TRUE))
Run Code Online (Sandbox Code Playgroud)
这.是一个"代词",它引用了df管道传输的数据框mutate.
Run Code Online (Sandbox Code Playgroud)A B C means 1 3 0 9 4.000000 2 4 6 NA 5.000000 3 5 8 1 4.666667
您还可以使用所有常用方法(列名,索引grep等)仅选择要包括的特定列.
df %>%
mutate(means=rowMeans(.[ , c("A","C")], na.rm=TRUE))
Run Code Online (Sandbox Code Playgroud)
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