2012-04-08 7 views
3

빈 누락 값과 NA가 모두 포함 된 큰 데이터 프레임이 있습니다. 수행 요약 (계수 (안양 $의 COL))는 나에게원하지 않는 요소 수준의 값을 NA로 대체하십시오.

A 
123 
B 
50000 

90000 
C 
26000 
NA's 
12476 

같은 (50000 후 빈을 확인할 수 있습니다.)
sum(is.na(df$col))은 12476, NA의 수와 동일한 수 있습니다 's의,하지만 난' d는 공백과 NA의 합계가되도록합니다.
나는
levels(df$col) <- c("A", "B", "Blank", "C")
을하고 그리고 df$col <- factor(df$col, exclude="Blank")을 시도하여 공백에 대한 수준을 만들려고 그리고 그것은 NA 년대가 생성되었지만 내 출력이 동일 함을 말한다. 누구든지 요소 수준에 따라 NA를 만드는 방법을 알고 있거나 누락 된 값을 대체하기위한 더 나은 솔루션을 알고 있습니까? 문제는 공백이 하나 이상의 공백 문자이므로 공백이 NA '으로 바뀌지는 않았지만이를 확인하는 방법을 모르겠다 고 생각합니다.

답변

2

이 시도 : 새로운 레벨 이후

df <- data.frame(a=11:18, col=c("C", "", "A", NA, "A", "", "C", NA)) 
levels(df$col) # "" "A" "C" 
sum(is.na(df$col)) # 2 

df$col <- factor(df$col, levels=LETTERS[1:3]) 
levels(df$col) # "A" "B" "C" 
sum(is.na(df$col)) # 4 

을 모두 공백 NA ("") 빈 될 것입니다 포함되지 않습니다.

+0

불행히도 내 요인 수준이 실제로 A : C라고 불리지 않기 때문에이 방법으로는 효과가 없습니다. 나는 레벨 (df $ col) <-c ("A", "B", "Blank", "C") 및 df $ col <- factor (df $ col, levels = c ("A" , "B", "C")) 그리고 그것은 작동하지 않았다. 어떤 아이디어? –

+0

좋아요, 레벨 (df $ col) <- c (글자 1 : 2, "공백", 글자 3) 및 df $ col <- 요소 (df $ col, levels = LETTERS [1 : 3 ]) 이것은 효과가 있었다. 도움을 많이 주셔서 감사합니다. –