2014-05-11 2 views
3

전체 데이터 프레임 내부뿐만 아니라 컬럼에서 NA의 비율을 찾으려고합니다.data.frame에서 NA의 비율을 찾는 방법은 무엇입니까?

제가 주석 처리 한 첫 번째 방법은 제로를 제공하고 주석 처리되지 않은 두 번째 방법은 저에게 매트릭스를 제공합니다. 내가 무엇을 놓치고 있는지 잘 모르겠다. 어떤 힌트라도 진심으로 감사드립니다! 전체 dataframe를 들어

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) 

답변

13
x = data.frame(x = c(1, 2, NA, 3), y = c(NA, NA, 4, 5)) 

:

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

또는 0 : 컬럼에 대한

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

또는

mean(is.na(x)) 
colMeans(is.na(x)) 
+0

주고 심지어 바로 적용 할 필요가 없습니다 실현합니다

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

? ''sum (is.na (cp.2006)) [1] 138' –

+2

또는 그냥'mean (is.na (x)) ' –

+0

'cols.NA

3

또한 열 단위 비율로 dplyr::summarize_all을 사용할 수도 있습니다. 난 그냥 is.na (X)와 함께 작업했다

 x y 
1 0.25 0.5 
관련 문제