我正在尝试计算累积金额并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=TRUE的summarize功能.有没有办法让它工作mutate?我更喜欢一个dplyr答案,因为实际上这是一长串管道的一部分.
您需要为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)