使用na.rm = TRUE和mutate中的函数

Naz*_*zer 3 r dplyr

我正在尝试计算累积金额并mutate用于创建新列.我正在为多列执行此操作,并且每个列都在不同位置丢失数据.

day    water    nitrogen
 1      4        5
 2      NA       6
 3      3        NA
 4      7        NA
 5      2        9
 6      NA       3
 7      2        NA
 8      NA       2
 9      7        NA
10      4        3
Run Code Online (Sandbox Code Playgroud)

我试试

mutate(df, sumwater = cumsum(water))%>%
mutate(sumnitrogen = cumsum(nitrogen)) 
Run Code Online (Sandbox Code Playgroud)

要么

mutate(df, sumwater = cumsum(water, na.rm = TRUE))%>%
mutate(sumnitrogen = cumsum(nitrogen, na.rm = TRUE))
Run Code Online (Sandbox Code Playgroud)

既不起作用.我知道我们能做到na.rm=TRUEsummarize功能.有没有办法让它工作mutate?我更喜欢一个dplyr答案,因为实际上这是一长串管道的一部分.

bra*_*ayl 5

您需要为NA选择替换值.你可以做零.但如果这些是真正的NA,那么平均替换似乎更有意义(或者甚至是几何平均值,如果值严格大于0)

detach("package:dplyr")
library(plyr)
library(dplyr)

mutate(df, sumwater = water %>% mapvalues(NA, 0) %>% cumsum)

mutate(df, sumwater = water %>% mapvalues(NA, mean(water) ) %>% cumsum)
Run Code Online (Sandbox Code Playgroud)