我有一个包含产品原型测试数据的数据集.并非所有测试都在所有批次上运行,并且并非所有测试都使用相同的样本大小执行.为了说明,请考虑这种情况:
> test <- data.frame(name = rep(c("A", "B", "C"), each = 4),
var1 = rep(c(1:3, NA), 3),
var2 = 1:12,
var3 = c(rep(NA, 4), 1:8))
> test
name var1 var2 var3
1 A 1 1 NA
2 A 2 2 NA
3 A 3 3 NA
4 A NA 4 NA
5 B 1 5 1
6 B 2 6 2
7 B 3 7 3
8 B NA 8 4
9 C 1 9 5
10 C 2 10 …Run Code Online (Sandbox Code Playgroud) 在模拟过程中,我创建了多个具有1,000,000个变量的数据集。但是,这些变量的某些值是NA,在某些情况下甚至所有值都是NA。现在,我想计算变量的所有值的总和,但要获取NA所有值是否为NA。
common sum(x, na.rm=T)或or 的问题sum(na.omit(x))是,如果所有值均为,则返回0 NA。因此,我编写了自己的函数,该函数NA以预期的方式处理:
sumna <- function(x) {
sumna <- NULL
return(ifelse(all(is.na(x)), NA, sum(na.omit(x))))
}
Run Code Online (Sandbox Code Playgroud)
但是,该实现相当慢。
因此,我正在寻找一个实现或预先实现的函数,该函数求和向量的值,如果所有值均为,则省略NA并返回。NANA
提前谢谢了!