首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在变体中使用na.rm=TRUE函数

在变体中使用na.rm=TRUE函数
EN

Stack Overflow用户
提问于 2015-10-05 21:40:00
回答 2查看 5.5K关注 0票数 3

我试图计算累积和,并使用mutate创建新列。我正在为多个列这样做,每个列在不同的地方都有丢失的数据。

代码语言:javascript
复制
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

我试着

代码语言:javascript
复制
mutate(df, sumwater = cumsum(water))%>%
mutate(sumnitrogen = cumsum(nitrogen)) 

代码语言:javascript
复制
mutate(df, sumwater = cumsum(water, na.rm = TRUE))%>%
mutate(sumnitrogen = cumsum(nitrogen, na.rm = TRUE))

这两样都不管用。我知道我们可以在na.rm=TRUE函数中执行summarize。有办法让它在mutate中工作吗?我更喜欢dplyr的答案,因为在现实中,这是一个长长的管道链的一部分。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-24 21:01:06

另一个避免加载plyr的解决方案是使用tidyr::replace_na (参见na.html):

代码语言:javascript
复制
library(dplyr)
library(tidyr)

df %>% replace_na(list(water = 0)) %>% mutate(sumwater = cumsum(water))
票数 2
EN

Stack Overflow用户

发布于 2015-10-05 21:47:05

您需要为NA选择一个替换值。你可以做零。但如果这些都是NA的,则均值替换似乎更有意义(甚至几何平均值,如果值严格大于0)。

代码语言:javascript
复制
detach("package:dplyr")
library(plyr)
library(dplyr)

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

mutate(df, sumwater = water %>% mapvalues(NA, mean(water) ) %>% cumsum)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32958352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档