priceR 패키지를 사용한 환율 가져오기
금융 데이터 중에 주식 가격만큼 우리 주위에서 많이 사용되는 데이터가 환율 데이터이다. 환율 데이터는 priceR
패키지를 사용하면 가져올 수 있다.
priceR
패키지는 경제와 금융에서 필요한 각종 가격 정보를 가져오는 함수들과 가격정보를 분석하는데 필요한 함수들을 제공한다. priceR
은 다음의 네가지 기능을 제공한다.
- 환율 : 즉각 활용이 가능한 환율 정보 검색
- 인플레이션 : 과거 가격 정보와 현재 가격 정보의 비교를 통한 인플레이션 정보 검색
- 정규식 : 텍스트에서 일반적인 가격 패턴을 쉽게 추출
- 서식 지정 : 보고서 작업(Rmarkdown 문서를 포함)에서 통화를 쉽게 처리
우선 priceR
을 설치한다.
if(!require(priceR)) {
install.packages('priceR')
library(priceR)
}
현재 환율 데이터 가져오기
priceR
패키지에서 현재의 환율 데이터를 가져오는데 사용하는 함수는 exchange_rate_latest()
이다. 이 함수는 약 170개 국가의 환율을 가져올 수 있다. 매개변수로 가져오고자 하는 환율 코드를 전달하면 현재의 170여개의 환율를 검색해준다. 매개변수로 사용되는 환율 코드는 currencies()
로 검색할 수 있다.
currencies() |> head(10)
## description code
## 1 United Arab Emirates Dirham AED
## 2 Afghan Afghani AFN
## 3 Albanian Lek ALL
## 4 Armenian Dram AMD
## 5 Netherlands Antillean Guilder ANG
## 6 Angolan Kwanza AOA
## 7 Argentine Peso ARS
## 8 Australian Dollar AUD
## 9 Aruban Florin AWG
## 10 Azerbaijani Manat AZN
exchange_rate_latest('KRW') |> head(10)
## Daily KRW exchange rate as at end of day 2022-07-07 GMT
## currency one_krw_is_equivalent_to
## 1 AED 0.002815
## 2 AFN 0.067233
## 3 ALL 0.088895
## 4 AMD 0.308826
## 5 ANG 0.001382
## 6 AOA 0.327972
## 7 ARS 0.096826
## 8 AUD 0.001132
## 9 AWG 0.001377
## 10 AZN 0.001303
exchange_rate_latest('USD') |> filter(currency == 'KRW')
## Daily USD exchange rate as at end of day 2022-07-07 GMT
## currency one_usd_is_equivalent_to
## 1 KRW 1304.678
과거 환율 데이터 가져오기
앞에서는 170여개의 통화에 대한 현재 환율 데이터를 가져오는 방법이었다. 하지만 특정 통화에 대한 과거 환율의 변화를 보고자 한다면 historical_exchange_rates()
를 사용할 수 있다.
historical_exchange_rates(from = 'USD', to = 'KRW', start_date = '2022-01-01', end_date = '2022-06-30') |> tail(10)
## date one_USD_equivalent_to_x_KRW
## 172 2022-06-21 1290.733
## 173 2022-06-22 1296.087
## 174 2022-06-23 1298.731
## 175 2022-06-24 1287.772
## 176 2022-06-25 1288.353
## 177 2022-06-26 1287.951
## 178 2022-06-27 1285.477
## 179 2022-06-28 1291.284
## 180 2022-06-29 1301.540
## 181 2022-06-30 1287.301
만약 두 개이상의 환율표를 만들고자 한다면 어떻게 해야할까? 각각의 환율표를 만들고 날짜를 기준으로 조인해주면 만들수 있다. 다음은 원화에 대한 달러와 유로의 환율표를 만드는 방법이다.
USD_KRW <- historical_exchange_rates(from = 'USD', to = 'KRW', start_date = '2022-01-01', end_date = '2022-06-30')
EUR_KRW <- historical_exchange_rates(from = 'EUR', to = 'KRW', start_date = '2022-01-01', end_date = '2022-06-30')
left_join(USD_KRW, EUR_KRW, by = 'date') |> tail(10)
## date one_USD_equivalent_to_x_KRW one_EUR_equivalent_to_x_KRW
## 172 2022-06-21 1290.733 1360.268
## 173 2022-06-22 1296.087 1369.985
## 174 2022-06-23 1298.731 1366.801
## 175 2022-06-24 1287.772 1360.385
## 176 2022-06-25 1288.353 1360.264
## 177 2022-06-26 1287.951 1361.523
## 178 2022-06-27 1285.477 1359.432
## 179 2022-06-28 1291.284 1358.808
## 180 2022-06-29 1301.540 1358.334
## 181 2022-06-30 1287.301 1348.164
환율 정보 그래프 그리기
앞서 얻어낸 원화에 대한 달러와 유로에 대한 환율 변화를 그래프로 그리면 다음과 같이 그릴 수 있다.
우선 ggplot2
로 그려보겠다.
library(ggplot2)
library(lubridate)
left_join(USD_KRW, EUR_KRW, by = 'date') |>
ggplot(aes(x = date)) +
geom_line(aes(y = one_USD_equivalent_to_x_KRW, group = 1, color = 'USD')) +
geom_line(aes(y = one_EUR_equivalent_to_x_KRW, group = 1, color = 'EUR')) +
geom_text(data = USD_KRW |> filter(date == max(date)),
aes(x = date, y = one_USD_equivalent_to_x_KRW, label = round(one_USD_equivalent_to_x_KRW, 0)),
hjust = 0, size = 8) +
geom_text(data = EUR_KRW |> filter(date == max(date)),
aes(x = date, y = one_EUR_equivalent_to_x_KRW, label = round(one_EUR_equivalent_to_x_KRW, 0)),
hjust = 0, size = 8) +
scale_x_date(limits = c(min(USD_KRW$date), max(USD_KRW$date+5)), date_breaks = '1 month', date_labels = '%y %B') +
scale_color_manual(name = '환율', values = c('USD' = 'red', 'EUR' = 'blue')) +
labs(title = '2022년 원화의 달러와 유로 환율', x = '날짜', y = '원') +
theme(text = element_text(size = 25))
이를 plotly
로 그리면 다음과 같이 그릴 수 있다.
library(plotly)
left_join(USD_KRW, EUR_KRW, by = 'date') |>
plot_ly() |>
add_lines(x = ~date, y = ~one_USD_equivalent_to_x_KRW, name = 'USD') |>
add_lines(x = ~date, y = ~one_EUR_equivalent_to_x_KRW, name = 'EUR') |>
layout(title = '2022년 원화의 달러와 유로 환율',
xaxis = list(title = '날짜'),
yaxis = list(title = '원'),
margin = list(t = 50, b = 25, l = 25, r = 25))
'금융 데이터 분석' 카테고리의 다른 글
plotly를 사용한 동적 주가 그래프 그리기 in R (0) | 2022.11.23 |
---|---|
세계은행(World Bank) 데이터 사용 in R (0) | 2022.09.20 |
비트코인(암호화폐) 가격 불러오기 in R (0) | 2022.08.21 |
주가 그래프 그리기 in R (0) | 2022.07.01 |
주가 데이터 가져오기 in R (0) | 2022.07.01 |
댓글