gpt4 book ai didi

r - 在忽略 NA 值的同时计算 cumsum()

转载 作者:行者123 更新时间:2023-12-03 09:01:52 25 4
gpt4 key购买 nike

考虑以下命名向量 x .

( x <- setNames(c(1, 2, 0, NA, 4, NA, NA, 6), letters[1:8]) )
# a b c d e f g h
# 1 2 0 NA 4 NA NA 6

我想计算 x 的累积和而忽略 NA值。许多 R 函数都有一个参数 na.rm删除 NA计算之前的元素。 cumsum()不是其中之一,这使得这个操作有点棘手。

我可以这样做。
y <- setNames(numeric(length(x)), names(x))
z <- cumsum(na.omit(x))
y[names(y) %in% names(z)] <- z
y[!names(y) %in% names(z)] <- x[is.na(x)]
y
# a b c d e f g h
# 1 3 3 NA 7 NA NA 13

但这似乎过分了,并且会产生很多新的作业/副本。我确定有更好的方法。

有什么更好的方法可以在有效忽略 的同时返回累积和 NA 值(value)观?

最佳答案

你想要这样的东西:

x2 <- x
x2[!is.na(x)] <- cumsum(x2[!is.na(x)])

x2

[编辑] 或者,正如上面的评论所建议的,您可以将 NA 更改为 0 -
miss <- is.na(x)
x[miss] <- 0
cs <- cumsum(x)
cs[miss] <- NA
# cs is the requested cumsum

关于r - 在忽略 NA 值的同时计算 cumsum(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25576358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com