-
[R]_31일차_06.04프로그래밍/R 2021. 6. 6. 00:17
토요일 일정
- 졸업작품 최종 발표
결측치 제거 방법
- filter() 함수
- 결측치가 있는 행 제거 가능
- na.omit() 함수
- 결측치가 있는 행 한번에 제거
결측치 제외하기
- na.rm 옵션
- na.rm = T (결측치 제외하고 함수 적용)
결측치 확인
- table() 함수
- 빈도표 생성
boxplot 통계치 출력하기 (176p)
boxplot(mpg$hwy)$stats # boxplot 통계치 출력
결측 처리하기
# 12~37 벗어나면 NA 할당 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)
요약
# 1. 결측치 정제하기 # 결측치 확인 table(is.na(df$score)) # 결측치 제거 df_nomiss <- df %>% filter(!is.na(score)) # 여러 변수 동시에 결측치 제거 df_nomiss <- df %>% filter(!is.na(score) # 함수의 결측치 제외 기능 이용하기 mean(df$score, na.rm = T) exam %>% summarise(mean_math = mean(math, na.rm = T)) # 2. 이상치 정제하기 # 이상치 확인 table(outlier$sex) # 결측 처리 outlier$sex <- ifelse(outlier$sex == 3, NA, outlier$sex) # boxplot으로 극단치 기준 찾기 boxplot(mpg$hwy)$stats # 극단치 결측 처리 mpg$hwy <- ifelse(mpg$hwy < 12 | mpg$hwy > 37, NA, mpg$hwy)
DB와 연결하기
JDBC 사용
- 문법은 R 문법 사용
※ SELECT만 가능 (INSERT, DELETE, UPDATE 불가능)
mySQL
### DB 연결하기 (mySQL)(RJDBC) install.packages("rJava") install.packages("RJDBC") library(rJava) library(RJDBC) # 데이터베이스 연결 설정 jdbcDriver <- JDBC(driverClass="com.mysql.jdbc.Driver" , classPath="C://Database/mySQL/mysql-connector-java-5.1.46.jar") conn <- dbConnect(jdbcDriver, "jdbc:mysql://localhost:3306/jspbookdb", "root", "1234") # sql을 사용해서 r로 데이터 가져오기 r <- dbGetQuery(conn, "SELECT * FROM member") class(r) str(r) r
해당 오류 발생시 해결 방법
library(RJDBC) 필요한 패키지를 로딩중입니다: rJava Error: package or namespace load failed for ‘rJava’: .onLoad가 loadNamespace()에서 'rJava'때문에 실패했습니다: 호출: inDL(x, as.logical(local), as.logical(now), ...) 에러: 공유된 객체 'C:/Program Files/R/R-3.6.2/library/rJava/libs/x64/rJava.dll'를 로드 할 수 없습니다: LoadLibrary failure: 지정된 모듈을 찾을 수 없습니다. 에러: 패키지 ‘rJava’는 로드되어질 수 없습니다 추가정보: 경고메시지(들): 1: 패키지 ‘RJDBC’는 R 버전 3.6.3에서 작성되었습니다 2: 패키지 ‘rJava’는 R 버전 3.6.3에서 작성되었습니다
# 해결 방법 # R 콘솔 창에 해당 명령어 입력 # 경로는 본인이 java를 다운받은 경로(폴더)로 설정할 것!!!! Sys.setenv(JAVA_HOME="C:/jdk1.8")
Oracle
#r 실행 버젼유의 #64비트에서 실행해야 에러가 적게남 # 첨부된 ojdbc6.jar 파일을 다운로드 받아서 C:\ 아래에 두세요. install.packages("rJava") # 패키지 설치 install.packages("RJDBC") library(rJava) # 패키지 불러오기 library(RJDBC) #데이터베이스 연결 설정 jdbcDriver <- JDBC(driverClass="oracle.jdbc.OracleDriver" , classPath="C://Database/oracle_db/ojdbc6.jar") # jar 파일의 경로 conn <- dbConnect(jdbcDriver, # 본인 oracleDB 계정 id, pw 입력 "jdbc:oracle:thin:@localhost:1521/xe", "scott", "tiger") #sql을 사용해서 r로 데이터 가져오기 r <- dbGetQuery(conn, "SELECT * FROM scott.emp") class(r) str(r) r ######################################################## #거의 모든 sql문이 가능 sql <- "select deptno, count(*) as cnt from scott.emp group by deptno order by deptno " r <- dbGetQuery(conn, sql) r ######################################################## #job_id별 salary의 합계는? sql <- "select job, sum(sal) as sum_sal from emp group by job order by job desc " r <- dbGetQuery(conn, sql) r #########################################################
CH08_그래프 만들기
ggplot2 레이어 구조
- 1단계 : 배경 설정(축)
- 2단계 : 그래프 추가(점, 막대, 선)
- 3단계 : 설정 추가(축 범위, 색 표식)
geom_point()
- 산점도를 그리는 함수
산점도 그래프
1. 배경 설정 + 데이터 설정
# x축은 displ, y축은 hwy로 지정해 배경 생성 ggplot(data = mpg, aes(x = displ, y = hwy))
2. 배경에 산점도 추가
# 2. 배경 설정 + 데이터 설정 + 그래프 그리기 ggplot(data = mpg, aes(x = displ, y = hwy)) + geom_point()
3. 축 범위를 조정하는 설정 추가하기
# x축 범위 3-6으로 지정 ggplot(data = mpg, aes(x = displ, y = hwy)) + geom_point() + xlim(3, 6) # x축 범위 3-6, y축 범위 10-30으로 지정 ggplot(data =mpg, aes(x = displ, y = hwy)) + geom_point() + xlim(3, 6) + ylim(10, 30)
막대 그래프
- 집단 간 차이를 표현할 때 주로 사용 (ex. 성별 소득 차이)
mpg 데이터를 이용한 막대 그래프
library(dplyr) 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() # 크기 순으로 정렬하기 # 배경 및 데이터 설정, x y축 설정 및 정렬, 산점도 그래프 설정 ggplot(data = df_mpg, aes(x = reorder(drv, -mean_hwy), # 정렬 y = mean_hwy)) + geom_col()
빈도 막대 그래프
- 하나의 변수(x축) 만 지정 (y축은 count로 자동 생성)
- 개수로 막대의 길이를 표현한 그래프
- geom_bar() 사용
ggplot(data = mpg, aes(x = drv)) + geom_bar()
원래의 데이터로 초기화 (ex. mpg 데이터)
mpg <- as.data.frame(ggplot2::mpg)
선 그래프
- 시간에 따라 달라지는 데이터를 표현할 때 주로 사용
- 시계열 데이터 란? (Time Series Data)
- 일정 시간 간격을 두고 나열된 데이터
- 시계열 그래프 란? (Time Series Chart)
- 시계열 데이터를 선으로 표현한 그래프
economics 데이터
- 미국의 경제 지표들을 월별로 나타낸 데이터
pce : 수십억 달러의 개인 소비 지출 (personal consumption expenditures) pop : 총 인구 (total population) psavert : 개인 저축률 (personal saving rates) uempmed : 실업 기간 중앙값, 주 단위, (median duration of unemployment, in weeks) unemploy : 수천 명의 실업자 수 (number of unemployed in thousands)
# 선 그래프 economics ?economics ggplot(data = economics, aes(x = date, y = unemploy)) + geom_line()
Box plot
- 데이터의 분포 (퍼져있는 형태)를 직사각형 상자 모양으로 표현한 그래프
- 분포를 알 수 있어 데이터의 특성을 더 자세히 이해 가능
drv : 구동 방식 hwy : 고속도로 연비. ggplot(data = mpg, aes(x = drv, y = hwy)) + geom_boxplot()
8장 정리
# 1.
CSV 파일 DB에 삽입하기
Oracle
- GUI 프로그램 (developer) 에서 테이블 선택 - 우클릭 - Import
mySQL
- cmd 사용 (mybox에서 관련 파일 알아보기!)
- workbench로는 잘 안됨
'프로그래밍 > R' 카테고리의 다른 글
[R] wordcloud2 패키지 실습 (0) 2021.06.07 [RStudio, 스크랩] Error-.onLoad가 loadNamespace()에서 'rJava'때문에 실패했습니다 (0) 2021.06.06 [오류] 함수 "%>%"를 찾을 수 없습니다 (0) 2021.06.03 [R]_30일차_06.03 (0) 2021.06.03 [R]_28일차_06.01 (0) 2021.06.02