개발자입니다
섹션 5. Chapter 05 데이터 가공 (Youtube HelloJany) 본문
■ 연산자
-사칙 연산자: +, -, *, /, %/%(몫), %%(나머지), ^(제곱), **(제곱)
-비교 연산자: >, >=, <, <=, ==, !=
-논리 연산자: &(그리고), |(또는)
x <- 1:3
y <- 3:1
(x > 0) & (y > 1)
[1] TRUE TRUE FALSE
■ 데이터 전처리
-컬럼 선택, 컬럼 빼고 선택, 필터로 조건 설정, 정렬, summarize, group 진행
install.packages("dplyr")
install.packages("readxl")
library(dplyr)
library(readxl)
exdata1 <- read_excel("C:/Rstudy/Sample1.xlsx")
exdata1 %>% select(ID) # 해당 데이터의 ID 컬럼 가져오기
exdata1 %>% select(ID, AREA, Y17_CNT) # 해당 데이터의 ID, AREA, Y17_CNT 컬럼 가져오기
exdata1 %>% select(-ID) # ID만 빼고 가져옴
exdata1 %>% filter(AREA=='서울') # AREA가 서울인 데이터만 가져온다
exdata1 %>% filter(AREA=='서울' & Y17_CNT >= 10) # AREA가 서울 & 17_CNT 가 10 이상인 데이터만 가져온다
exdata1 %>% arrange(AGE) # 나이순으로 정렬
exdata1 %>% arrange(desc(AGE)) # 나이순 내림차순으로 정렬
exdata1 %>% summarise(TOT_Y17_AMT = sum(AMT17)) # AMT17 값 합계 표시
exdata1 %>% group_by(AREA) %>% summarise(SUM_Y17_AMT = sum(AMT17)) %>% arrange(desc(SUM_Y17_AMT))
# AREA 별 그룹으로 묶고 SUM_Y17_AMT 이름으로 AMT17의 합계를 내서 내림차순으로 표시
-데이터 파악 함수
install.packages("readxl")
library(readxl)
# sample1 엑셀 파일을 불러와서 exdata1 데이터 세트로 저장
exdata1 <- read_excel("C:/Rstudy/Sample1.xlsx")
exdata1 # exdata1 데이터 세트 내용 확인
View(exdata1) # exdata1 데이터 세트 확인
str(exdata1) # exdata1 데이터 세트의 변수 속성 조회
dim(exdata1) # 몇행 몇열로 되어있는지 확인
ls(exdata1) # 변수명(열이름) 확인
실행 결과 Console
> exdata1 # exdata1 데이터 세트 내용 확인
# A tibble: 10 × 8
ID SEX AGE AREA AMT17 Y17_CNT AMT16 Y16_CNT
<dbl> <chr> <dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 1 F 50 서울 1300000 50 100000 40
2 2 M 40 경기 450000 25 700000 30
3 3 F 28 제주 275000 10 50000 5
4 4 M 50 서울 400000 8 125000 3
5 5 M 27 서울 845000 30 760000 28
6 6 F 23 서울 42900 1 300000 6
7 7 F 56 경기 150000 2 130000 2
8 8 F 47 서울 570000 10 400000 7
9 9 M 20 인천 930000 4 250000 2
10 10 F 38 경기 520000 17 550000 16
> View(exdata1) # exdata1 데이터 세트 확인
> str(exdata1) # exdata1 데이터 세트의 변수 속성 조회
tibble [10 × 8] (S3: tbl_df/tbl/data.frame)
$ ID : num [1:10] 1 2 3 4 5 6 7 8 9 10
$ SEX : chr [1:10] "F" "M" "F" "M" ...
$ AGE : num [1:10] 50 40 28 50 27 23 56 47 20 38
$ AREA : chr [1:10] "서울" "경기" "제주" "서울" ...
$ AMT17 : num [1:10] 1300000 450000 275000 400000 845000 42900 150000 570000 930000 520000
$ Y17_CNT: num [1:10] 50 25 10 8 30 1 2 10 4 17
$ AMT16 : num [1:10] 100000 700000 50000 125000 760000 300000 130000 400000 250000 550000
$ Y16_CNT: num [1:10] 40 30 5 3 28 6 2 7 2 16
> dim(exdata1)
[1] 10 8
> ls(exdata1)
[1] "AGE" "AMT16" "AMT17" "AREA" "ID" "SEX"
[7] "Y16_CNT" "Y17_CNT"
-파생 변수 생성, 신규 변수 추가
install.packages("dplyr")
library(dplyr)
exdata1 <- read_excel("C:/Rstudy/Sample1.xlsx")
View(exdata1)
# 변수명 변경 후 파생 변수 exdata2 생성
exdata2 <- rename(exdata1, Y17_AMT = AMT17, Y16_AMT = AMT16)
# 신규 변수 추가
exdata2$AMT <- exdata2$Y17_AMT + exdata2$Y16_AMT
exdata2$CNT <- exdata2$Y17_CNT + exdata2$Y16_CNT
exdata2$AVG_AMT <- exdata2$AMT / exdata2$CNT
View(exdata2)
-ifelse 문 조건 설정. 중첩 가능
# ifelse문 조건 AGE < 50 이면 N, 아니면 Y 변수 생성
exdata2$AGE50_YN <- ifelse(exdata2$AGE >= 50, "Y", "N")
# ifelse문 중첩하여 변수 생성
exdata2$AGE50_GR10 <- ifelse(exdata2$AGE >= 50, "A1.50++",
ifelse(exdata2$AGE >= 40, "A2.4049",
ifelse(exdata2$AGE >= 30, "A3.3039",
ifelse(exdata2$AGE >= 20, "A4.2029","A50019"))))
View(exdata2)
-데이터 결합
세로 결합, 가로 결합
세로 결합, bind_rows() 함수
가로 결합, left_join(), inner_join(), full_join() 함수
library(readxl)
library(dplyr)
jeju_y17_history <- read_excel("Sample4_y17_history.xlsx")
jeju_y16_history <- read_excel("Sample5_y16_history.xlsx")
bind_col <- left_join(jeju_y17_history, jeju_y16_history, by = "ID")
bind_col_inner <- inner_join(jeju_y17_history, jeju_y16_history, by = "ID")
bind_col_full <- full_join(jeju_y17_history, jeju_y16_history, by = "ID")
: View(jeju_y17_history) 및 View(jeju_y16_history)
: join 결과
left_join()
inner_join()
full_join()
■ 그래프
'R' 카테고리의 다른 글
섹션 7. Chapter 07 reshape2 패키지 (Youtube HelloJany) (0) | 2022.09.08 |
---|---|
섹션 6. Chapter 06 패키지 (Youtube HelloJany) (0) | 2022.09.07 |
섹션 4. Chapter 04 데이터 수집 (Youtube HelloJany) (0) | 2022.09.07 |
섹션 3. Chapter 03 데이터 종류 (Youtube HelloJany) (0) | 2022.09.06 |
섹션 2. Chapter 02 데이터 분석과 구조 (Youtube HelloJany) (0) | 2022.09.06 |