하나의 열에 yes
, no
및 NA
의 항목이 들어있는 데이터 세트가 있습니다. 어떤 NA
을 1
으로 대체하고 이 아닌 NA
항목을 대체하고 싶습니다. Ifelse
은 비 항목을 0
으로 바꿉니다. NA
항목을 1
으로 대체하지 않습니다. 나는 그것에 대한 is.na()
명령을 사용해야합니다. is.na()
은 ifelse
이 작동하지 않는 이유는 무엇입니까?Ifelse가 NA를 대체하지 못하는 이유는 무엇입니까?
필자는 데이터를 얻은 이후로 요소로 정의 된 열로 시작하는 아래의 재현 가능한 예제를 정의합니다.
q <-as.factor(c(NA, "yes", "no", "yes", NA))
## Does not work
q <- ifelse(q == "NA", 1, 0)
q
### Returns: [1] NA 0 0 0 NA
## Does not work
q[q == "NA"] <- 1
q
### Returns: [1] NA 0 0 0 NA
## This works
q[is.na(q)] <- 1
q
### Returns: [1] 1 0 0 0 1
일부 다른 항목이 있지만이 정확한 문제는없는 것으로 보입니다. https://stackoverflow.com/a/8166616/1364839 -이 대답은 is.na()
이 작동하지만 왜 ifelse
이 실패하지 않는지를 보여줍니다.
'ifelse'에는 아무런 문제가 없습니다. 당신은 두 가지 완전히 다른 논리 비교를하고 있습니다. 문자열 "NA"는 'NA'와는 아무런 관련이 없습니다. – joran
'? base :: Logic'과'? NA'를 읽으십시오. –
ifelse에서 'NA'를 직접 참조하려면 어떻게해야합니까? –