본문 바로가기

R

dplyr 패키지와 readxl 패키지를 이용하여 조건별 부분합을 계산하자 (2020.12.10.목) 야 너도 R 코딩 할 수 있어 #1

작성일: 2020년 12월 10일 목요일

사용 언어: R

사용 플랫폼: R studio

사용 패키지: readxl, dplyr
사용 함수: read_excel (readxl 내장 함수), View, mutate (dplyr 내장 함수), group_by(dplyr 내장 함수), summarize, sum 

 

 

목차

# Step 1: 필요한 패키지를 설치한다: readxl, dplyr 
# Step 2: 패키지를 불러온다.
# Step 3: 이번 예제에서 쓰일 파일을 불러온다. 사용 함수: read_excel(), View() 
# Step 4: 새로운 변수를 만들자. KRW_amount = 1200 * USD_amount. 사용 함수: mutate() 
# Step 5: 조건 2개(BM, date) 이 적용된 부분합(partial sum)을 계산하자. 사용 함수: group_by(), summarize(), sum() 

 

 

본문

Motivation: 이런 자료를

Target end-picture: 아래와 같이 구현하자. 

즉, group 조건1 = BM, 조건2 = date (오래된 날짜가 위에), 출력 변수값 = KRW_amount_sum

- 정의: KRW_amount = 1200 * USD_amount 

 

# Step 1: 필요한 패키지를 설치한다: readxl, dplyr 

install.packages("readxl")

install.packages("dplyr")

 

# Step 2: 패키지를 불러온다.

library(readxl)

library(dplyr)

 

# Step 3: 이번 예제에서 쓰일 파일을 불러온다. 사용 함수: read_excel(), View() 

data <- read_excel("20201210_example_R_sumifs.xlsx") # "내 문서"에 저장된 20201210_example_R_sumifs.xlsx 파일을 read_excel 함수를 이용하여 불러오고, 불러온 내용을 'data'라는 matrix에 저장한다.

 

View(data) # data matrix를 View 함수를 이용해 화면에 출력해 본다. note: V는 대문자로 입력해야 한다. 

 

View(data)의 출력 화면: date, security_name, BM 등 여러 정보가 나열됨 

# Step 4: 새로운 변수를 만들자. KRW_amount = 1200 * USD_amount. 사용 함수: mutate() 

# 설명: 원화 = 달러 * 1200원/달러 (즉, KRW/USD = 1200원으로 가정하여 원화 금액을 계산하자.)

 

 

mutate 함수를 이용하여 새 변수인 KRW_amount를 생성한 모습

# 적절하게 KRW_amount 변수가 생성된 것으로 판단된다. 이제, 기존 data matrix에 위 값을 덮어쓰기 하자

 

data<- data %>%
     mutate(KRW_amount = 1200 * USD_amount)

 

# data matrix의 가장 오른쪽 column에 KRW_amount 변수가 출력되어 있다. 

 

KRW_amount 변수가 추가된 data matrix

# Step 5: 조건 2개(BM, date) 이 적용된 부분합(partial sum)을 계산하자. 사용 함수: group_by(), summarize(), sum() 

 

data_partial_sum <- 
data %>%
              group_by(BM, date) %>%
              summarize(KRW_amount_sum = sum(KRW_amount))

 

최종 결과물: 조건1) BM, 2) date 에 해당되는 KRW_amount의 부분합을 KRW_amount_sum에 저장하였다. 

포스팅 제목: "야 너도 R 코딩 할 수 있어 #1 - dplyr 패키지와 readxl 패키지를 이용하여 조건별 부분합을 계산하자"

출처: Compute2080 의 블로그