dplyr를 이용한 전처리, ggplot2를 이용한 시각화 연습을 하였다.
잘 정제되어 있는 데이터여서 사실 전처리는 필요가 없었던 것 같다.
최근에 했던 프로젝트 데이터 분석에서는 정말 결측치나 이상치가 엄청 많아 제대로 된 결과가 안 나왔었다는 걸 생각해보면 이번 mpg데이터는 정말 좋은 것 같다.
============================== R ==============================
rm(list=ls())
library("ggplot2")
library("dplyr")
mpg <- ggplot2::mpg
mpg
str(mpg)
qplot(data = mpg, x = drv)
#ggplot사용(산점도). aes배경만들기. geom으로 데이터를 point형태로 입력. x,ylim으로 범위 제한
ggplot(data = mpg, aes(x = displ, y = hwy)) + geom_point()+ xlim(3,6) + ylim(10,30)
#qplot사용(막대그래프). data는 데이터. x 는 data 안에 들어있는 자료로 x축 설정.
qplot(data = mpg, x = drv)
#drv가 4인 y값
length((which(mpg$drv == 4)))
mpg1 <- mpg %>% group_by(drv) %>% summarise(mean_hwy = mean(hwy))
mpg1
#aes에서 -mean_hwy를 했는데 여기서 -가 붙은 이유는 내림차순을 하기 위해서이다.
ggplot(data = mpg1, aes(x= reorder(drv, -mean_hwy),y=mean_hwy)) + geom_col()
#class를 막대그래프로 그리는 방법
ggplot(data = mpg, aes(x= class)) + geom_bar()
#데이터 타입이 tbl_df, tbl, data.frame 3개가 있다.
#따라서 as.data.frame으로 전부 데이터프레임으로 바꿔준다.
econ <- ggplot2::economics
str(econ)
#데이터 프레임으로 바꿔준다.
econ<-as.data.frame(econ)
econ
#꺾은 선 그래프를 출력
ggplot(data = econ, aes(x = date, y = unemploy)) + geom_line()
mpg <- ggplot2::mpg
#quick plot의 약자로 적합하다 판단된 그래프로 빠르게 그려주는 메서드
qplot(data = mpg, x = drv, y = hwy)
#mpg데이터를 이용해서 aes라는 면에 geom로 point형태 출력해주는 명령문
ggplot(data = mpg, aes(x = displ, y = hwy)) + geom_point()
#위에서 x, y 제한을 통해 원하는 데이터를 더 적합하게 얻는 방법
ggplot(data = mpg, aes(x = displ, y=hwy))+geom_point()+xlim(3,6)+ylim(10,30)
#drv가 4인 데이터 값의 크기
length(which(mpg$drv==4))
#drv가 f인 데이터 값의 크기
length(which(mpg$drv=="f"))
#mpg 데이터를 drv에 관해 묶고 hwy의 평균을 mean_hwy라는 칼럼을 통해 출력
mpg <- mpg %>% group_by(drv) %>% summarise(mean_hwy = mean(hwy))
mpg <- data.frame(mpg)
#x = drv, y = mean_hwy를 geom_col()로 막대그래프 표현
ggplot(data = mpg, aes(x= reorder(drv, -mean_hwy), y=mean_hwy))+geom_col()
#bar는 빈도 막대 그래프, col은 평균 막대 그래프
ggplot(data = mpg, aes(x = class)) +geom_bar()
#bins로 폭 너비를 설정 할 수 있다. 작을수록 두껍고 커질수록 얇아진다.
ggplot(data = mpg, aes(x=hwy))+geom_histogram(bins=20)
#line 함수로 표현
qplot(data = mpg, x = drv, y = hwy, geom = "line")
economics <- as.data.frame(ggplot2::economics)
head(economics)
#시계열 그래프
ggplot(data = economics, aes(x = date, y = unemploy))+geom_line()
x <- c(1,3,5,2,4,1,5,6,9,12,13,14,19)
length(x)
sort(x)
median(x)
#사분위수 값을 구하는 quantile()
quantile(x)
qplot(data = mpg, x = drv, y = hwy, geom = "boxplot")
#색상 입히기
qplot(data = mpg, x = drv, y = hwy, geom = "boxplot", color = drv)
#mpg를 data.frame으로 바꾸기
mpg1 <- as.data.frame(ggplot2::mpg)
ggplot(data = mpg1, aes(x = drv, y = hwy))+geom_boxplot()
#중간값
median(mpg$hwy)
#사분위수
quantile(mpg$hwy)
#정렬
sort(mpg$hwy)
mpg <- ggplot2::mpg
#각 요소값 cty+hwy의 합의 평균을 total에 넣는다. 여기서 새로운 컬럼이 생성된다.
mpg$total <-(mpg$cty + mpg$ hwy)/2
#요약
summary(mpg$total)
#히스토그램으로 출력
hist(mpg$total)
#mpg의 컬럼 total이 20이 넘으면 pass, 안 넘으면 fail로 출력
ifelse(mpg$total >= 20, "pass","fail")
#mpg에 test라는 컬럼을 추가하는데 추가하는 내용은 위와 같음.
mpg$test <- ifelse(mpg$total >= 20, "pass","fail")
#table로 정량데이터로 만들어 보기 편하게 할 수도 있음.
table(mpg$test)
#여기서 mpg$test가 아닌 test로 해도 같은 결과를 얻을 수 있다.
#bar는 빈도, col은 평균 막대 그래프.
ggplot(data = mpg, aes(x=mpg$test))+geom_bar()
#grade라는 컬럼을 추가하여 A,B,C를 나눠준다.
mpg$grade <- ifelse(mpg$total >= 30, "A", ifelse(mpg$total >= 20,"B","C"))
table(mpg$grade)
#둘 다 같은 값을 표현
qplot(data = mpg, x = grade)
ggplot(data = mpg, aes(x = grade)) + geom_bar()
============================== R ==============================
'프로그래밍 > Python, R 프로그래밍' 카테고리의 다른 글
[R] R 8일차 (0) | 2018.05.21 |
---|---|
[Python] Python 7일차 (0) | 2018.05.18 |
[Python] Python 6일차 (0) | 2018.05.17 |
[R] R 6일차 (0) | 2018.05.17 |
[Python] Python 5일차 (0) | 2018.05.16 |