Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

개발자입니다

섹션 5. Chapter 05 데이터 가공 (Youtube HelloJany) 본문

R

섹션 5. Chapter 05 데이터 가공 (Youtube HelloJany)

끈기JK 2022. 9. 7. 11:24

■ 연산자

-사칙 연산자: +, -, *, /, %/%(몫), %%(나머지), ^(제곱), **(제곱)

-비교 연산자: >, >=, <, <=, ==, !=

-논리 연산자: &(그리고), |(또는)

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()

 

 

■ 그래프