Создание для l oop с использованием функции tq_get из библиотеки tidyquant, чтобы получить данные по безработице по штатам в R? [Изображение и код включены] - PullRequest
0 голосов
/ 20 апреля 2020

Цель: Я хочу получить первичные заявки по безработице по штатам в таблице для каждого штата в США

Вот пример, которым я следую: Ссылка

Вот краткий фрагмент кода по этой ссылке:

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

Этот первый фильтр предназначен для Грузии. Однако, я хочу это для всех состояний . Мне удалось создать CSV-файл для объединения всех сокращений штата с «ICLAIMS». Я просто хочу передать для l oop через мою функцию, которую вы видите ниже. Приложенный снимок экрана csv, который я загрузил, который имеет все состояния в этом формате ... 'CAICLAIMS', 'NYICLAIMS', 'ALICLAIMS' и так далее ...

enter image description here

1 Ответ

1 голос
/ 20 апреля 2020

Мы можем создать функцию:

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)
...