R – data.frame의 특정 컬럼의 NA를 0으로 채우기

별것 아닙니다만
data.frame에 NA가 섞인 경우에 이 결측치(missing value)를 채울 때 특정 컬럼의 결측치만 0으로 채워주고 싶을 때가 있습니다.
한 컬럼은 어떻게 하는 기억하실텐데요. 두 개 이상의 컬럼에 있는 NA를 모두 0으로 채우려면 apply를 써야하나? for loop을 돌려야 하나  이렇게 생각하기 쉬운데 이렇게 하면 됩니다.

index <- c("1번줄", "2번줄", "3번줄", "4번줄", "5번줄")  # 그냥 텍스트 컬럼
column1 <- c(1, 2, 3, 4, NA)  # 숫자 컬럼
column2 <- c(2, 3, 4, NA, 5)  # 숫자 컬럼
df <- as.data.frame(cbind(index, column1, column2))  # data.frame 생성

df
df[is.na(df[, "column1"]), "column1"] <- 0  # 한 컬럼의 결측치만 처리할 때는 이렇게
df

df
df[, c("column1", "column2")][is.na(df[, c("column1", "column2")])] <- 0  # 두 컬럼의 결측치를 처리할 때는 이렇게
df

Rstudio에서 실행해보고 결과를 어떻게 되는지 금방  알 수 있습니다.

R 언어의 구조적에서 [와 ]가 연산자 심볼이라는 것을 기억하면 사실 간단한 것인데 여러가지 다른 랭귀지를 섞어서 사용하다면 저 컨셉을 매번 까먹습니다.

 

Author: 떰학

답글 남기기