有没有一种优雅的方法可以在dplyr中将NA处理为0(NA.rm=TRUE)?

data <- data.frame(a=c(1,2,3,4), b=c(4,NA,5,6), c=c(7,8,9,NA))

data %>% mutate(sum = a + b + c)

a  b  c sum
1  4  7  12
2 NA  8  NA
3  5  9  17
4  6 NA  NA

但我喜欢

a  b  c sum
1  4  7  12
2 NA  8  10
3  5  9  17
4  6 NA  10

即使我知道在许多其他情况下这不是理想的结果

推荐答案

你可以用这个:

library(dplyr)
data %>% 
  #rowwise will make sure the sum operation will occur on each row
  rowwise() %>% 
  #then a simple sum(..., na.rm=TRUE) is enough to result in what you need
  mutate(sum = sum(a,b,c, na.rm=TRUE))

输出:

Source: local data frame [4 x 4]
Groups: <by row>

      a     b     c   sum
  (dbl) (dbl) (dbl) (dbl)
1     1     4     7    12
2     2    NA     8    10
3     3     5     9    17
4     4     6    NA    10

R相关问答推荐

pivot_longer:names_to和names_pattern

如何设置搜索栏来搜索整个Shiny应用程序页面?

如何使用行政边界形状文件中的人口普查数据调整格栅数据集中的人口数据

插入指示行之间时间间隔的新行

ggplot 2中的地块底图(basemaps_gglayer()不起作用)

列出用m n个值替换来绘制n个数字的所有方法(i.o.w.:R中大小为n的集合的所有划分为m个不同子集)

R Lubridate:舍入/快照日期时间到一天中最近的任意时间?

在位置周围设定一个半径并识别该半径内的其他位置

无法将传奇添加到cowplot多情节中

整数成随机顺序与约束R?

ggplot的轴标签保存在officer中时被剪切

当月份额减go 当月份额

R根据条件进行累积更改

如果某些列全部为NA,则更改列

我如何才能找到FAMILY=POISSON(LINK=&Q;LOG&Q;)中的模型预测指定值的日期?

矩阵的堆叠条形图,条形图上有数字作为标签

正则表达式在第二个管道和第二个T之后拆分R中的列

向R中的数据帧添加一列,该列统计另一列中每个唯一值的二进制观测值的数量

ArrangeGrob()和类似的替代方法不接受Grob列表.在Grid.Draw,返回:glist中的错误(...):仅允许在glist";中使用Grobs;

按组使用dummy r获取高于标准的行的平均值