如何查找data.frame中NAs的百分比?

如何查找data.frame中NAs的百分比?,r,csv,dataframe,na,R,Csv,Dataframe,Na,我试图找出列中以及整个数据帧中NAs的百分比: sum(is.na(x))/prod(dim(x)) 我已经注释的第一个方法给了我零,没有注释的第二个方法给了我一个矩阵。不知道我错过了什么。任何暗示都是真诚的感谢 cp.2006<-read.csv(file="cp2006.csv",head=TRUE) #countNAs <- function(x) { # sum(is.na(x)) #} #total=0 #for (i in col(cp.2006)) { #

我试图找出列中以及整个数据帧中NAs的百分比:

sum(is.na(x))/prod(dim(x))
我已经注释的第一个方法给了我零,没有注释的第二个方法给了我一个矩阵。不知道我错过了什么。任何暗示都是真诚的感谢

cp.2006<-read.csv(file="cp2006.csv",head=TRUE)

#countNAs <- function(x) { 
#  sum(is.na(x)) 
#} 
#total=0
#for (i in col(cp.2006)) {
#  total=countNAs(i)+total
#}
#print(total)
count<-apply(cp.2006, 1, function(x) sum(is.na(x)))
dims<-dim(cp.2006)
num<-dims[1]*dims[2]
NApercentage<-(count/num) * 100
print(NApercentage)
cp.2006
对于整个数据帧:

sum(is.na(x))/prod(dim(x))

对于列:

apply(x, 2, function(col)sum(is.na(col))/length(col))


您还可以使用
dplyr::summary_all
来表示按列的比例

x %>% summarize_all(funs(sum(is.na(.)) / length(.)))
这将给

     x   y
1 0.25 0.5

如果您有兴趣查找完整案例的百分比

用同样的例子

输出:

   x  y
1  1 NA
2  2 NA
3 NA  4
4  3  5
寻找完整案例:

complete.cases(x)
mean(complete.cases(x))
输出:

[1] FALSE FALSE FALSE  TRUE
完成案例的百分比:

complete.cases(x)
mean(complete.cases(x))
输出:

[1] 0.25
这意味着提供的数据中有25%的完整行可用。i、 e只有第四行是完整的,其余都包含NA值


干杯

不再支持funs的dplyr更新版本:

x%>%summary\u all(list(name=~sum(is.na())/length())

你可以试试这个

colMeans(is.na.data.frame(dataframe_name))
试试这个:

sapply(数据,函数(y)轮((和(长度(即.na(y)))/nrow(数据))*100.00,2))

我刚和is.na(X)一起工作,意识到我甚至不需要申请,对吗<代码>>总和(is.na(cp.2006))[1]138
或只是
平均值(is.na(x))
cols。NA@fernando为什么
apply
函数的第二个参数是
2
?在我发布答案后,我注意到您编辑了
prod(dim(x))
。美好的
colMeans(is.na.data.frame(dataframe_name))