1
我有一个有多个列的数据框。对于一列,我想计算累计总和,但缺少值时会遇到一些问题。cumsum在NA之后重新开始
#sample data
test <- c(-1.2, 4.6, -8.3, 5, 8, 1, -2, NA, NA, NA, -3, 5.1, 1.9)
test <- as.data.frame(test)
#This gives NA after NAs occurred
sum_test <- lapply(test, FUN=cumsum)
sum_test
$test
[1] -1.2 3.4 -4.9 0.1 8.1 9.1 7.1 NA NA NA NA NA NA
#This continues with adding to pre-NA value after last NA
sum_test <- lapply(test, function(x) ave(x, is.na(x), FUN=cumsum))
sum_test
$test
[1] -1.2 3.4 -4.9 0.1 8.1 9.1 7.1 NA NA NA 4.1 9.2 11.1
不过,我想实现的是,在NAS cumsum重新开始后:
-1.2 3.4 -4.9 0.1 8.1 9.1 7.1 NA NA NA -3 2.1 4
可以这样做?
这是伟大的。可以用'na.omit'来解决同样的问题吗? –
'na.omit'输出一个通常比其输入短的向量,所以在这里似乎不太有用。 –