我试图计算累积和,并使用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我试着
mutate(df, sumwater = cumsum(water))%>%
mutate(sumnitrogen = cumsum(nitrogen)) 或
mutate(df, sumwater = cumsum(water, na.rm = TRUE))%>%
mutate(sumnitrogen = cumsum(nitrogen, na.rm = TRUE))这两样都不管用。我知道我们可以在na.rm=TRUE函数中执行summarize。有办法让它在mutate中工作吗?我更喜欢dplyr的答案,因为在现实中,这是一个长长的管道链的一部分。
发布于 2018-01-24 21:01:06
另一个避免加载plyr的解决方案是使用tidyr::replace_na (参见na.html):
library(dplyr)
library(tidyr)
df %>% replace_na(list(water = 0)) %>% mutate(sumwater = cumsum(water))发布于 2015-10-05 21:47:05
您需要为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)https://stackoverflow.com/questions/32958352
复制相似问题