새소식

R/preprocessing

R | 전처리 | 결측치 처리

  • -

 

 

 

 

결측치 젤 중요해.....

 

 

 

00.  데이터 불러오기 

# library(dplyr) 
imdb <- read.csv(file.choose())
imdb %>% head()

 


 

01. 결측치 확인 

- is.na(x): x 객체 안에 NA 값이 있으면 그 자리에 TRUE를 반환하고, 없으면 FALSE를 반환한다.

is.na(imdb$Metascore)[1:30]
sum(is.na(imdb$Metascore)) # Metascore 열의 NA 갯수 출력

NA일 경우 True 값을 반환
결측치 총 157개 존재

 

imdb %>% filter(is.na(Meta_score)) # Meta_score가 NA인 데이터 출력

- 결측치 빈도 출력

# imdb내 모든 변수별 결측치 개수 출력
colSums(is.na(imdb))  # True가 1이니깐

모든 컬럼의 결측치 개수를 출력해 줌.

table(is.na(imdb)) # 결측치 157개


 

02. 결측치 제거

- na.omit() : 결측치가 하나라도 포함된 행은 삭제

imdb2 <- na.omit(imdb)

# 결측치 제거 확인
colSums(is.na(imdb2))

 


- complete.cases() : 행에 누락된 데이터가 없는(NA가 존재하지 않는)지를 확인해주는 함수, NA값은 False로 반환

# NA가 아닌 값만 반환됨
imdb3 <- imdb[complete.cases(imdb[,12]), ]  

colSums(is.na(imdb3))

- dplyr의 filter() 사용해서 결측치 제거

imdb %>% filter(!is.na(imdb)) #!is.na NA가 없는 행만 출력

 

03. 결측치 대체

- is.na가 True인 값(즉, 결측치) 들에 대해 58.99 지정

imdb$Metascore2 <- imdb$Metascore

# 대체
imdb$Metascore2[is.na(imdb$Metascore2)] <- 58.99

 

 

 


 

04. 결측치 생략 계산

- mean(), sum()... 얘네들은 na값 있으면 계산 안 됨

mean(imdb$Revenue..Millions., na.rm =T)

 

 


 

'R > preprocessing' 카테고리의 다른 글

R | 데이터프레임 중복제거(duplicated())  (0) 2022.12.06
Contents