2020. 8. 19. 00:16ㆍ카테고리 없음
[패스트캠퍼스 수강 후기] R 인강 100% 환급 챌린지 10차 미션
패스트캠퍼스의 강의 중, 프로젝트와 함께 배우는 R 데이터 분석 올인원 패키지 Online를 수강하고 있습니다.
내용을 복습도 할 겸, 미션에도 참가할 겸, 블로그에 매일 매일 정리해 보게 되었습니다.
오늘은 10회차 미션!
Part 2) [R로 하는 데이터 분석] 데이터 분석 기본기 익히기
Part 3) [R로 하는 데이터 분석] 데이터 다듬어 보기
-
12. Ch 05. 데이터 가공하기 - 06. 데이터 합치기
-
01. Ch 06. 그래프 그리기 - 01. 변수 간 관계를 표현하는 산점도
-
12. Ch 05. 데이터 가공하기 - 06. 데이터 합치기
-
여러 데이터셋을 하나로 합쳐서 처리해야 함.
-
데이터 합치기의 종류
-
가로로 합치기 (열 추가)
-
left_join(A, B, by - "id")
-
by의 인자는 큰따옴표 필요!
-
세로로 합치기
-
서로 다른 반의 점수를 합치기 (행 추가)
-
데이터 생성
-
가로로 합치기
-
left_join(A, B, by - "id")
-
id라는 걸 기준으로 합친다. (큰 따옴표를 사용한다는 걸 주의)
-
같은 id일 때, 같은 행으로 인식하게끔 하는 것
-
즉, 행의 개수가 동일할 필요는 없음
-
실제 예시
-
주의
-
left_join, bind_rows는 모두 dplyr 패키지에 포함
-
연습 id로 합치기 (중간/기말고사)
-
test1 <- data.frame(id = c(1, 2, 3, 4, 5), midterm = c(60, 80, 70 ,90, 85))
-
test2 <- data.frame(id = c(1, 2, 3, 4, 5), finalterm = c(70, 83, 65, 95, 80))
-
total <- left_join(test1, test2, by = "id")
-
연습2 (exam에 class바다 선생님 추가)
-
name <- data.frame(class = c(1, 2, 3, 4, 5), teacher = c("kim", "lee", "park", "choi", "jung"))
-
total <- exam_new <- left_join(exam, name, by ="class")
-
세로로 합치기
-
1~5반까지의 데이터와 6~10반까지의 데이터를 합치기
-
bind_rows(A, B)
-
여기는 by를 사용하지 않아 (단순히 붙이는 것이므로)
-
실제로 예시
-
group_a <- test1
-
group_b <- data.frame(id = c(6, 7, 8, 9, 10), midterm = c(70, 83, 65, 95, 80))
-
group_all <- bind_rows(group_a, group_b)
-
group_all
-
-
install.packages("reshape")
-
library(reshape)
-
group_a <- rename(group_a, c(midterm = "test"))
-
group_a
-
group_b <- rename(group_b, c(midterm ="test"))
-
group_b
-
group_all <- bind_rows(group_a, group_b)
-
group_all
-
연습문제
-
연료별 가격 정보 추가
-
주의! stringAsFactors
-
String을 factor로 바꾸지 말고, 그냥 스트링으로 유지하라는 의미
-
F로 하지 않으면 범주형변수(factor)로 지정됨
-
연습문제
-
fuel <- data.frame(fl = c("c", "d", "e", "p", "r"), price_fl = c(2.35, 2.38, 2.11, 2.76, 2.22), stringsAsFactors = F)
-
fuel
-
mpg_new <- left_join(mpg, fuel, by = "fl")
-
head(mpg_new)
-
-
mpg_new %>%
-
select(model, fl, price_fl) %>%
-
head(5)
-
정리하기
-
마무리 문제
-
내가 작성한 코드
-
as.data.frame(midwest) %>%
-
mutate(popchild = (poptotal-popadults), popchildratio = (poptotal-popadults)/poptotal*100 ) %>%
-
arrange(desc(popchildratio)) %>%
-
mutate(category = ifelse(popchildratio >= 50, "large", ifelse(popchildratio >= 30, "middle", "small"))) %>%
-
select(county, popchildratio, category) %>%
-
head(5)
-
문제4는
-
아시아인 인구 백분률을 추가하고 arrange한 후...state, county, 등으로 select해서 처리하면 됨.
-
as.data.frame을 안해서 한동안 에러를 겪음
-
mutate내에서 정의한 변수를 곧바로 그 괄호 안에서 사용하는 것은 안됨 (다시 해보니 잘 됨) -
추가 학습
-
data.frame 내의 변수 이름 변경하기
-
install.packages("reshape")
-
library(reshape)
-
group_a <- rename(group_a, c(midterm = "test"))
-
위와 같이 사용
-
01. Ch 06. 그래프 그리기 - 01. 변수 간 관계를 표현하는 산점도
-
이제는 데이터를 이해하기 위해서 '그래프'를 활용해야 함
-
R 을 이용해서 그래프를 그려보자
-
대부분의 그래프는 표현 가능
-
산점도 - 버블차트
-
네트워크 표시
-
지도 시각화
-
3차원 데이터 표현
-
모션 차트 (시시각각 변화하는 데이터)
-
클릭 등에 따라 변화하는 차트도 가능
-
제일많이 쓰는 것
-
산점도, 막대 그래프, 시간 그래프, 상자그림
-
위의 4가지가 가장 많이 사용되는 그래프
-
강사는 BoxPlot을 강조!
-
일단은 이것부터 그려봐라!
-
산점도 - 변수 간 관계 표현하기
-
ggplot2의 레이어 구조.
-
산점도
-
x, y가 연속된 그래프에 사용
-
나이와 소득의 관계 등
-
써보자
-
library(ggplot2)
-
1단계: 배경 설정.
-
ggplot(data = mpg, aes(x = displ, y = hwy))
-
aes라는 함수는 축을 결정
-
2단계: 그래프 추가
-
ggplot(data = mpg, aes(x = displ, y = hwy))+geom_point()
-
**dplyr는 %>%를 즐겨 썼는데, ggplot은 + 를 사용한다.
-
마찬가지로 +에서 엔터쳐서 줄바꿈하는 것도 가능
-
3단계: 축 범위 제한
-
ggplot(data = mpg, aes(x = displ, y = hwy))+geom_point()+xlim(3,6)
-
xlim은 축의 범위 설정 (x limit이라는 의미)
-
3단계 더 추가.. ylim (줄 바꿔가며 표현 가능>> + 다음에 엔터)
-
ggplot(data = mpg, aes(x = displ, y = hwy))+
-
geom_point()+
-
xlim(3,6)+
-
ylim(10, 30)
-
qplot vs. ggplot
-
qplot: quick plot
-
간단하게 빨리 그려볼 때 사용
-
상세하게 그려볼 때는 ggplot사용
-
연습
-
코드
-
ggplot(data=mpg, aes(x=cty, y=hwy)) +
-
geom_point()
-
-
ggplot(data=midwest, aes(x=poptotal, y=popasian)) +
-
geom_point() +
-
xlim(0, 500000) +
-
ylim(0, 10000)
이제 그래프를 그리기 시작하니 본격적으로 데이터 분석을 시작한 느낌!