【发布时间】:2017-05-22 15:37:24
【问题描述】:
我有一个包含 100 个变量的 data.frame。我只想使用mutate(而不是summarise)来获得三个变量的总和。
如果 3 个变量中的任何一个有 NA,我仍然想获得 sum。为了使用mutate 执行此操作,我使用ifelse 将所有NA 值替换为0,然后我得到了sum。
library(dplyr)
df %>% mutate(mod_var1 = ifelse(is.na(var1), 0, var1),
mod_var2 = ifelse(is.na(var2), 0, var2),
mod_var3 = ifelse(is.na(var3), 0, var3),
sum = (mod_var1+mod_var2+mod_var3))
有没有更好(更短)的方法来做到这一点?
数据
df <- read.table(text = c("
var1 var2 var3
4 5 NA
2 NA 3
1 2 4
NA 3 5
3 NA 2
1 1 5"), header =T)
【问题讨论】:
-
replace(df, is.na(df), 0) %>% mutate(sum = var1 + var2 + var3) -
@RichScriven 你的回答很棒。但是,正如我在问题中提到的那样,我有一个包含 100 个变量的 data.frame,您的答案会将所有 100 个变量中的 NA 替换为我不想要的零(不仅是 var1、var2 和 var3)