トップ 一覧 検索 ヘルプ RSS ログイン 印刷

getFX()の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
{{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)