我有一个简单的问题,我似乎无法找到答案在谷歌,stackoverflow或stackexchange。我目前正在使用rollapply
的示例来查找包含NA的某些值的总和。举例来说:
z <- zoo(c(NA, NA, NA, NA,2, 3, 4, 5, NA))
rollapply(z, 3, sum, na.rm = TRUE, align = "right")
该输出:
3 4 5 6 7 8 9
0 0 2 5 9 12 9
这看起来很好,但是,有两次有3个NA的连续。求和功能将NA转换为0。不幸的是,这对我将要处理的数据不起作用,因为0是一个有意义的值。有没有办法再用NA代替0?
我正在寻找一个输出如下:
3 4 5 6 7 8 9
NA NA 2 5 9 12 9
在此先谢谢您!
2条答案
按热度按时间7lrncoxx1#
以下是两种方法:
**1)**注意,不是
rollapply
给出0,而是sum(x, na.rm = TRUE)
给出0。函数sum(x, na.rm = TRUE)
并不是这里真正需要的。相反,提供一个以所需方式工作的
sum
版本,即当输入全部是NA
值时,它返回NA
,否则返回sum(x, na.rm = TRUE)
。**2)**或者,使用您的代码,然后通过将所有
NA
的位置替换为NA
来修复它:给出:
sauutmhj2#
你可以做以下的事情(尽管不是很好)
因此,只要
z
为na,就可以指定NA
,且rollapply
生成NA
它给你: