在数据字符串列中计算非NA的简单方法

时间:2013-03-29 13:52:27

标签: r

我试图找到一种简单的方法来计算数据框列中的非缺失案例。我使用过这个功能:

foo<- function(x) { sum(!is.na(x)) }

然后通过sapply()

将其应用于数据框
stats$count <- sapply(OldExaminee, foo2, simplify=T)

虽然这样做很好,但我不相信没有更简单的计数方法,即基本功能集中的某些东西。

有什么想法吗?

3 个答案:

答案 0 :(得分:9)

对于data.frame,您可以使用colSumsis.na获取它:

set.seed(45)
df <- data.frame(matrix(sample(c(NA,1:5), 50, replace=TRUE), ncol=5))
#    X1 X2 X3 X4 X5
# 1   3  2 NA  2 NA
# 2   1  5  1  1  4
# 3   1  1  3  2  3
# 4   2  2  3  5  3
# 5   2  2  5  2  2
# 6   1  2 NA  3  3
# 7   1  5  5  5  2
# 8   3 NA  4  1  5
# 9   1  2  3 NA  1
# 10 NA  1  1  2  2

colSums(!is.na(df))
# X1 X2 X3 X4 X5 
#  9  9  8  9  9 

答案 1 :(得分:2)

你可以使用na.omit

length(na.omit(x));

以及由caelorus表示的帖子

答案 2 :(得分:0)

您可以使用whichlength

length(which(!is.na(x$col)))

which返回匹配元素的索引(在本例中为非NA s),length告诉您有多少索引。

一次对所有列:

apply(OldExaminee, 2, function(x){ length(which(!is.na(x))) })