일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- 내일배움캠프
- wil
- 스파르타
- harkerrank
- 파이썬 철저입문
- 파이썬
- 스파르타 코딩
- 파이썬 머신러닝 완벽가이드
- R
- 오블완
- 내일배움
- 회귀분석
- 파이썬 머신러닝 완벽 가이드
- TiL
- Cluster
- 중회귀모형
- 티스토리챌린지
- 미세먼지
- 프로젝트
- 파이썬 완벽 가이드
- 웹 스크랩핑
- 파이썬 철저 입문
- 스파르타코딩
- MySQL
- 내일배움카드
- 실전 데이터 분석 프로젝트
- hackerrank
- SQL
- 텍스트 분석
- Today
- Total
OkBublewrap
데이터 전처리 본문
ID <- c(1:5)
SEX <- c('F','M','F','M','F')
data1 <- data.frame(ID, SEX)
data1
ID SEX
1 1 F
2 2 M
3 3 F
4 4 M
5 5 F
변수명 변경
data2 <- rename(data1, id = ID, sex = SEX)
data2
id sex
1 1 F
2 2 M
3 3 F
4 4 M
5 5 F
변수명이 소문자로 변경이 되었다는 것을 알수 있다.
특정 변수 선택
data2 %>% select(id)
id
1 1
2 2
3 3
4 4
5 5
id인 변수명만 선택
data2 %>% filter(sex == 'F')
성별이 여자인 값만 추출
id sex
1 1 F
2 3 F
3 5 F
내림차순으로 정렬하기
data2 %>% arrange(desc(id))
id sex
1 5 F
2 4 M
3 3 F
4 2 M
5 1 F
# 예제
class <- c(rep(1, 10))
id <- c(1:10)
math <- c(30,100,95,70,80,85,50,0,60,85)
eng <- c(40,95,90,80,90,90,70,30,80,85)
mid_exam <- data.frame(class, id, math, eng)
mid_exam
id <- c(1,2,3,4,5,6,7,9,10)
math_fin <-c(50,95,80,80,90,70,60,75,90)
eng_fin <- c(50,100,85,80,80,80,80,75,75)
final_exam <- data.frame(id, math_fin, eng_fin)
final_exam
mid_exam 변수명 변경
mid_exam %>% rename(math_mid = math, eng_mid = eng)
mid_exam의 id는 1부터 10까지이지만 final_exam의 id는 8이 빠진것을 알 수 있다.
inner_join 함수를 쓰면 8부분이 제외하고 값을 보여준다.
left_join은 8부분을 결측값으로 설정하고 mid_exam의 변수명 기준으로 보여준다.
full_join은 모든 id를 나타낸다.
bind_rows의 함수는 세로 결합을 한다.
total_exam <- left_join(mid_exam, final_exam)
class id math eng math_fin eng_fin
1 1 1 30 40 50 50
2 1 2 100 95 95 100
3 1 3 95 90 80 85
4 1 4 70 80 80 80
5 1 5 80 90 90 80
6 1 6 85 90 70 80
7 1 7 50 70 60 80
8 1 8 0 30 NA NA
9 1 9 60 80 75 75
10 1 10 85 85 90 75
total_exam <- inner_join(mid_exam, final_exam)
class id math eng math_fin eng_fin
1 1 1 30 40 50 50
2 1 2 100 95 95 100
3 1 3 95 90 80 85
4 1 4 70 80 80 80
5 1 5 80 90 90 80
6 1 6 85 90 70 80
7 1 7 50 70 60 80
8 1 9 60 80 75 75
9 1 10 85 85 90 75
total_exam$math_avg <- (total_exam$math + total_exam$math_fin)/2
total_exam$eng_avg <- (total_exam$eng + total_exam$eng_fin)/2
total_exam$total_avg <- (total_exam$math_avg + total_exam$eng_avg)/2
math_avg 변수명에 중간 수학 점수, 기말 수학 점수의 평균을 구한 값을 할당
eng_avg 변수명에 중간 영어 점수, 기말 영어 점수의 평균을 구한 값을 할당
total_avg 변수명에 math_avg, eng_avg의 평균값 할당
class id math eng math_fin eng_fin math_avg eng_avg total_avg
1 1 1 30 40 50 50 40.0 45.0 42.50
2 1 2 100 95 95 100 97.5 97.5 97.50
3 1 3 95 90 80 85 87.5 87.5 87.50
4 1 4 70 80 80 80 75.0 80.0 77.50
5 1 5 80 90 90 80 85.0 85.0 85.00
6 1 6 85 90 70 80 77.5 85.0 81.25
7 1 7 50 70 60 80 55.0 75.0 65.00
8 1 9 60 80 75 75 67.5 77.5 72.50
9 1 10 85 85 90 75 87.5 80.0 83.75
중간 수학 성적이 80점 이상이고, 영어점수가 90점 이상인 값만 추출
total_exam %>% filter(math >= 80, eng >= 90)
class id math eng math_fin eng_fin math_avg eng_avg total_avg
1 1 2 100 95 95 100 97.5 97.5 97.50
2 1 3 95 90 80 85 87.5 87.5 87.50
3 1 5 80 90 90 80 85.0 85.0 85.00
4 1 6 85 90 70 80 77.5 85.0 81.25
박스그림 시각화
boxplot(total_exam$math_avg, total_exam$eng_avg)