- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
{{category quantmod}}
!為替レートを取得する
Rの{quantmod}パッケージを使うと、為替レートを取得することができる。
install.packages("quantmod")
library(quantmod)
getFX("USD/JPY", from = Sys.Date()-7) #auto.assign = TRUEがデフォルトだが、通貨名しか返さない。
とすれば、過去1週間分の対ドル円レートが得られる。
> getFX("USD/JPY", from=Sys.Date()-7, auto.assign = FALSE)
USD.JPY
2015-08-27 119.38
2015-08-28 120.39
2015-08-29 121.06
2015-08-30 121.73
2015-08-31 121.73
2015-09-01 121.23
2015-09-02 120.32
ただし、これだけだと出力結果が、xtsクラスになって使いにくいため、DFに変換する。
上記の出力OBJ %>% as.data.frame() %>% rownames_to_column(var = "date")
! 複数の為替レートを取得する
mapを使って処理を繰り返す。以下r-wakalangのKDさんの回答
currencies = c("USD/JPY", "USD/EUR")
map(
.x = currencie,
.f = ~{
quantmod::getFX(.x, from = Sys.Date() - 7, auto.assign = FALSE) %>%
as.data.frame() %>%
rownames_to_column(var = "date")
}
) %>%
left_join(x = .[[1]], y = .[[2]], by = "date") %>%
# 以下は xts object に戻すための操作
column_to_rownames(var = "date") %>%
xts::as.xts() %>% class()
以下、同じくeitsupiさんの回答
df <- tibble(name = currencies) %>%
mutate(
data = map(
name,
~ quantmod::getFX(.x, from = Sys.Date() - 7, auto.assign = FALSE) %>%
fortify.zoo() %>%
as_tibble() %>%
rename_with(.cols = last_col(), .fn = ~ "value")
)
) %>%
unnest(data) %>%
pivot_wider(id_cols = Index)