171p - 173p 이상치 정제하기
#171p 이상치 정제하기
# 이상치 제거하기
outlier <- data.frame(sex = c (1, 2, 1, 3, 2, 1),
score = c(5, 4, 3, 4, 2, 6))
outlier
table(outlier$sex)
table(outlier$score)
# sex가 3이면 NA할당
outlier$sex <- ifelse(outlier$sex == 3, NA, outlier$sex)
outlier
# score가 5보다 크면 NA 할당
outlier$score <- ifelse(outlier$score > 5, NA, outlier$score)
outlier
install.packages("dplyr")
library(dplyr) #라이브러리 할당
outlier %>%
filter(!is.na(sex) & !is.na(score)) %>%
group_by(sex) %>%
summarise(mean_score = mean(score))
- ifelse 사용해서 지정값을 NA로 변경하기
174p - 177p 이상치 제거하기
# 이상치 제거하기
# 패키지 다운로드
install.packages("ggplot2")
library(ggplot2)
boxplot(mpg$hwy) # hwy변수로 상자그림 그리기
boxplot(mpg$hwy)$stats # 상자그림 통계치 출력
#결측치 처리하기
mpg$hwy <- ifelse(mpg$hwy < 12 | mpg$hwy > 37, NA, mpg$hwy)
table(is.na(mpg$hwy))
mpg %>%
group_by(drv) %>%
summarise(mean_hwy = mean(hwy, na.rm = T))
- boxplot() : 상자그림 그리기
- boxplot() $ stats : 상자그림 통계치 출력
아래 극단치 경계(12), 1사분위수 (18), 중앙값 (24), 3사분위수 (27), 위쪽 극단치 경계 (37)
- ifelse를 이용해서 아래 극단치 경계(12)보다 작거나 위쪽 극단치 경계(37)보다 큰 값을 결측치로 처리
My SQL 연동하기
# R <-> My SQL 연동
install.packages("rJava")
install.packages("RJDBC")
library(rJava)
library(RJDBC)
#데이터베이스 연결 설정
jdbcDriver <- JDBC(driverClass="com.mysql.jdbc.Driver"
, classPath="C://mysql-connector-java-5.1.38-bin.jar")
conn <- dbConnect(jdbcDriver,
"jdbc:mysql://localhost:3306/world", "root", "1234")
#sql을 사용해서 r로 데이터 가져오기
r <- dbGetQuery(conn, "SELECT * FROM city")
class(r)
str(r)
r
ORACLE 연동
# R <-> ORACLE 연동
#r 실행 버젼유의
#64비트에서 실행해야 에러가 적게남
# 첨부된 ojdbc6.jar 파일을 다운로드 받아서 C:\ 아래에 두세요.
install.packages("rJava")
install.packages("RJDBC")
library(rJava)
library(RJDBC)
#데이터베이스 연결 설정
jdbcDriver <- JDBC(driverClass="oracle.jdbc.OracleDriver"
, classPath="C://ojdbc6.jar")
conn <- dbConnect(jdbcDriver,
"jdbc:oracle:thin:@localhost:1521/xe", "scott", "tiger")
#sql을 사용해서 r로 데이터 가져오기
r <- dbGetQuery(conn, "SELECT * FROM scott.emp")
class(r)
str(r)
r
8장 그래프 만들기
- 그래프 : 목적이 있어야함 ex) 어느 대상에게 이걸 보여줘서 어떤 정보를 주고 싶은지
- 그래프를 사용하는 이유
1) 추세와 경향성을 확인 ( 산점도, 히스토그램 )
2) 패턴을 발견 ( 네트워크 그래프 )
- 그래프의 종류
2차원그래프, 3차원그래프, 지도그래프, 네트워크 그래프, 모션차트, 인터랙티브 그래프, 버블차트 등
- 그래프 함수
그래프를 그릴 때 ggplot2 패키지를 가장 많이 사용함.
180p - 188p 산점도 만들기
- 산점도란 ?
데이터를 x축과 y축에 점으로 표현한 그래프.
두 변수의 관계를 표현할 때 사용.
- ggplot2 레이어 구조 이해하기
1) 배경 설정 ( 축 )
2) 그래프 추가 ( 점, 막대, 선 )
3) 설정 추가 ( 축 범위, 색, 표식 )
# 8장 그래프
# 183p 산점도 만들기
library(ggplot2)
# displ(= 배기량), hwy(= 고속도로 연비)
# 1) x축은 displ, y축은 hwy로 지정해 배경 생성
ggplot(data = mpg , aes(x = displ, y = hwy))
# 2) 배경에 산점도 추가
ggplot(data = mpg, aes(x = displ, y =hwy)) + geom_point()
ggplot(data = mpg, aes(x = displ, y =hwy)) + geom_point() + xlim(3, 6) # 축 범위 설정 xlim( 최솟값, 최댓값 )
ggplot(data = mpg, aes(x = displ, y =hwy)) + geom_point() + xlim(3, 6) + ylim(10, 30) # 축 범위 설정 ylim( 최솟값, 최댓값 )
# 가독성 높이기
ggplot(data = mpg, aes(x = displ, y =hwy)) +
geom_point() +
xlim(3, 6) +
ylim(10, 30)
- aes : 1) 산점도 배경 생성 옵션
- geom_point() : 2) 그래프 추가 ( 점 )
- ggplot2패키지는 함수들을 + 로 연결함.
- xlim ( 최솟값, 최댓값 ) : 3) 그래프 설정 ( x축 범위 조정 )
- ylim ( 최솟값, 최댓값 ) : 3) 그래프 설정 ( y축 범위 조정 )
# 189p - 191p 막대그래프
- 막대그래프란 ?
성별, 소득 차이 처럼 집단 간 차이를 표현.
데이터의 크기를 막대의 길이로 표현
# 189p 막대그래프
# 집단별 평균표 만들기
library(dplyr)
# mpg 초기화 하기
ggplot2::mpg
mpg <- as.data.frame(ggplot2::mpg)
# drv (= 구동방식)
df_mpg <- mpg %>%
group_by(drv) %>%
summarise(mean_hwy = mean(hwy))
df_mpg
# 막대그래프 생성
ggplot(data = df_mpg, aes(x = drv, y = mean_hwy)) + geom_col()
# 막대그래프 정렬
ggplot(data = df_mpg, aes(x = reorder(drv, -mean_hwy), y = mean_hwy)) + geom_col()
- geom_col() : 막대그래프 추가
- reorder( x변수, 정렬기준 ) : 차트 정렬하기 ( - 정렬기준이면 내림차순 )
# 192p 빈도 막대 그래프 만들기
# 빈도 막대 그래프 만들기
ggplot(data = mpg, aes(x = drv)) + geom_bar() # drv 빈도
ggplot(data = mpg, aes(x = hwy) + geom_bar() # hwy 빈도
- geom_bar() : 빈도 막대 그래프 생성
- 빈도 막대 그래프는 count가 y축이기 때문에 y축 설정 no !
194p - 195p선 그래프
- 주로 시간에 따라 달라지는 데이터 표현 ex) 환율, 주가지수
- 시계열그래프라고도 함
# 194p 선 그래프
ggplot(data = economics, aes( x = date, y =unemploy)) + geom_line()
- geom_line : 선 그래프
196p - 198p 상자 그림
- 제일 잘 만든 그래프는 설명이 없는 누구나 봐도 아는 그래프
- 데이터의 분포를 직사각형 상자 모양으로 표현한 그래프
- box plot은 이걸 아는 사람들에게 발표 할 때만 사용
- violinplot을 이용해서 이해하기 쉽게 표현
# 196p 상자 그림
ggplot(data = mpg, aes(x = drv, y = hwy)) + geom_boxplot()
- geom_boxplot () : 상자그림 생성
drv = 구동 방식
hwy = 고속도로 연비
해석
- 4륜구동(4)은 17~22 사이에 대부분의 자동차가 모여있습니다.
중앙값이 상자 밑면에 가까운 것을 보면 낮은 값 쪽으로 치우친 형태의 분포라는 것을 알 수 있습니다.
- 전륜구동(f)은 26~29 사이에 좁은 범위에 자동차가 모여 있는 뾰족한 형태의 분포라는 것을 알 수 있습니다.
수염의 위, 아래에 점 표식이 있는 것을 보면 연비가 극단적으로 높거나 낮은 자동차들이 존재한다는 것을 알 수 있습니다.
- 후륜구동(r)은 17~24 사이의 넓은 범위에 자동차가 분포하고 있다는 것을 알 수 있습니다.
수염이 짧고 극단치가 없는 것을 보면 대부분의 자동차가 사분위 범위에 해당한다는 것을 알 수 있습니다.
Error : figure margins too large
에러가 생기면 ?
-> R GUI파일에서 코드 실행
ggplot2 함수 요약
값 | 내용 |
aes | 변수 선택 |
reorder | 정렬 |
geom_point() | 산점도 |
geom_col() | 막대그래프 |
geom_bar() | 빈도 막대그래프 |
geom_line() | 선 그래프 |
geom_boxplot() | 상자그림 |
ORACLE로 CSV파일 불러오기
'인공지능 > R' 카테고리의 다른 글
R - 지도시각화 (0) | 2021.06.08 |
---|---|
R - 인터렉티브 (0) | 2021.06.08 |
R 데이터 가공 (0) | 2021.06.03 |
R 데이터프레임, 데이터 분석 기초 (0) | 2021.06.02 |
R 설치, 변수, 함수, 패키지 이해 (0) | 2021.06.01 |