Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- level 1
- 프로그래머스
- 오라클
- 실기
- python3
- 파이썬
- 빅데이터 분석 기사
- Numpy
- R
- Kaggle
- 튜닝
- 실습
- sklearn
- seaborn
- oracle
- 카카오
- level 2
- matplotlib
- Oracel
- SQL
- 알고리즘
- pandas
- 빅분기
- 데이터 분석
- Python
- 머신러닝
- 코딩테스트
Archives
- Today
- Total
라일락 꽃이 피는 날
[R] 데이터 정제하기 본문
728x90
결측치 (Missing Value)
누락된 값 또는 비어있는 값을 의미한다.
함수 적용이 불가능하므로 분석 결과가 왜곡될 수 있다.
1. 결측치 생성 (NA)
df <- data.frame(sex = c("M", "F", NA, "M", "F"),
score = c(5, 4, 3, 4, NA))
df
2-1. 결측치 확인
is.na(df)
2-2. 결측치 빈도 출력
table(is.na(df))
3. 결측치가 포함된 상태로 분석
mean(df$score) # NA
sum(df$score) # NA
4. 결측치가 있는 행 제거
df_nomiss <- df %>% filter(!is.na(score) & !is.na(sex))
df_nomiss
5. 결측치를 제거한 데이터로 분석
mean(df_nomiss$score) # 4
sum(df_nomiss$score) # 16
추가) 모든 변수에 결측치 없는 데이터 추출
결측치가 하나라도 있으면 제거하기 때문에, 분석에 필요한 데이터까지 손실 될 가능성이 있다.
df_nomiss2 <- na.omit(df)
df_nomiss2
추가) 함수의 결측치 제외 기능 이용 (na.rm = T)
결측치 제외 기능을 지원하지 않는 함수도 있다.
mean(df$score, na.rm = T) # 4
sum(df$score, na.rm = T) # 16
결측치 대체하기
결측치가 많을 경우, 결측치를 모두 제외하면 데이터 손실이 크기 때문에 다른 값을 채워넣는다.
- 대표값(평균, 최빈값 등)으로 일괄 대체
- 통계분석 기법을 통해 예측값을 추정하여 대체
1. 결측치 생성
exam <- read.csv("csv_exam.csv")
exam[c(3, 8, 15), "math"] <- NA # 3, 8, 15행의 math에 NA 할당
2. 평균 구하기
exam %>% summarise(mean_math = mean(math)) # NA
exam %>% summarise(mean_math = mean(math, na.rm = T)) # 55.23529
mean(exam$math, na.rm = T) # 55.23529
3. 결측치 대체하기
exam$math <- ifelse(is.na(exam$math), 55, exam$math)
4. 결측치 빈도표 생성
table(is.na(exam$math))
5. 결측치를 제거한 데이터로 분석
mean(exam$math) # 55.2
728x90
'데이터 분석 > R' 카테고리의 다른 글
[R] t-test (t 검정) (0) | 2021.06.27 |
---|---|
[R] 이상치 정제하기 (0) | 2021.06.25 |
[R] 그래프 그리기 (0) | 2021.06.25 |
[R] 데이터 전처리 (Preprocessing) (0) | 2021.06.25 |
[R] 파생 변수 생성 (0) | 2021.06.19 |