统计数据帧中的非NAs;得到的答案作为载体

问题描述:

说我有下列R- data.frameZZZ统计数据帧中的非NAs;得到的答案作为载体

(ZZZ <- structure(list(n = c(1, 2, NA), m = c(6, NA, NA), o = c(7, 8, 
8)), .Names = c("n", "m", "o"), row.names = c(NA, -3L), class = "data.frame")) 

## not run 
    n m o 
1 1 6 7 
2 2 NA 8 
3 NA NA 8 

我想知道,在一个载体,有多少非NAS我已经得到形式。我想要的答案提供给我的:

2, 1, 3 

当我使用命令length(ZZZ),我得到3,这当然是向量在data.frame数量,一个宝贵的足够的资料片。

我还有其他的功能,在这个data.frame上运行,并给出答案的矢量形式,但是,dang-it,长度并不像这样操作。

试试这个:

# define "demo" dataset 
ZZZ <- data.frame(n=c(1,2,NA),m=c(6,NA,NA),o=c(7,8,8)) 
# apply the counting function per columns 
apply(ZZZ, 2, function(x) length(which(!is.na(x)))) 

有运行:

> apply(ZZZ, 2, function(x) length(which(!is.na(x)))) 
n m o 
2 1 3 

如果你真的坚持返回一个向量,你可以使用as.vector,例如通过定义这个功能:

nonNAs <- function(x) { 
    as.vector(apply(x, 2, function(x) length(which(!is.na(x))))) 
    } 

你可以简单地运行nonNAs(ZZZ)

> nonNAs(ZZZ) 
[1] 2 1 3 

如果你只是想总和来港整体,然后总和()与is.na(的)会做:

ZZZ <- data.frame(n = c(1, 2, NA), m = c(6, NA, NA), o = c(7, 8, 8)) 
sum(!is.na(ZZZ)) 
+0

varible我觉得OP在数据框中的每个**列**的总数**之后。 – daroczig 2011-02-13 19:06:16

+0

好点。我没有仔细阅读。 – kmm 2011-02-13 19:09:17

colSums(!is.na(x)) 

矢量化FTW。

为了得到总没有缺失值的总和使用(is.na(X))和科拉姆明智使用colSums(is.na(X)),其中x是包含数据集