使用tidyquant库中的tq_get函数创建for循环以在R中按州获取失业档案? [包含图片和代码]

时间:2020-04-20 00:55:23

标签: r loops for-loop quantmod

目标:我想在美国每个州的表格中按州获取初次失业申请。

这是我关注的示例:Link

以下是该链接中的代码的简短摘要:

ga_claims <- 
  "GAICLAIMS" %>% 
  tq_get(get = "economic.data", 
         from = "1999-01-01") %>% 
  rename(claims = price) 

第一个过滤器用于佐治亚州。但是,我想在所有州使用它。我能够创建一个csv文件,以将所有状态缩写与'ICLAIMS'连接起来。我只想通过下面的函数传递for循环。附件是我上传的csv的屏幕截图,其中包含所有状态的格式...“ CAICLAIMS”,“ NYICLAIMS”,“ ALICLAIMS”等...

enter image description here

1 个答案:

答案 0 :(得分:1)

我们可以创建一个函数:

library(dplyr)
library(tidyquant)

get_data <- function(x) {
  x %>% 
    tq_get(get = "economic.data",from = "1999-01-01") %>% 
    rename(claims = price) 
}

,并通过Claim_Code传递每个lapply

lapply(df$Claim_Code, get_data)

如果您要将其合并到一个数据帧中,我们可以这样做:

do.call(rbind, Map(cbind, lapply(df$Claim_Code, get_data), 
               Claim_Code = df$Claim_Code))

#         date claims Claim_Code
#1   1999-01-02   9674  GAICLAIMS
#2   1999-01-09  19455  GAICLAIMS
#3   1999-01-16  20506  GAICLAIMS
#4   1999-01-23  12932  GAICLAIMS
#5   1999-01-30  10871  GAICLAIMS
#6   1999-02-06   7997  GAICLAIMS

或使用purrr

library(purrr)
map2_df(map(df$Claim_Code, get_data), df$Claim_Code, cbind)

数据

df <- data.frame(Claim_Code = c('GAICLAIMS', 'ALICLAIMS', 'AZICLAIMS'), 
                 stringsAsFactors = FALSE)