У меня есть код, с которым мне любезно помог пользователь в эта тема. Он делает именно то, что я хочу, за исключением того, что результаты не сохраняются в фрейме данных.
## Setting up API Call
base_string1 <- "https.api.companyname/jurisdiction = "
base_string2 <- "&date = "
end_string <- "api_token=XYZ"
## Specifying objects to loop over
dates <- seq(as.Date("1990-01-01"), as.Date("2022-01-01"), by = "year")
dates <- paste(head(dates, -1), tail(dates-1, - 1), sep = ":")
countries<- paste0("eu_", c("fra", "ger"))
## Looping over
map_dfr(dates, function(dates){
map_dfr(states, function(countries){
api_string <- paste0(base_string1, countries, base_string2, dates, end_string)
print(api_string)
json <- jsonlite::fromJSON(api_string)
data.frame("countries" = countries,
"dates" = dates,
"total_number" = json[["results"]]$total_number)
})
})
Это дает мне
countries dates total_number
1 eu_ger 1990-01-01:1990-12-31 2404
2 eu_fra 1990-01-01:1990-12-31 2056
3 eu_ger 1991-01-01:1991-12-31 3490
4 eu_fra 1991-01-01:1991-12-31 6070
5 eu_ger 1992-01-01:1992-12-31 7808
6 eu_fra 1992-01-01:1992-12-31 1904
Какая информация мне нужна, но я хотел бы сохранить ее в фрейме данных, к которому я могу получить доступ. Я также хотел бы назвать страны «Германия» и «Франция», и вместо диапазона дат я хотел бы назвать это чем-то вроде 1992 года (а также есть версия, где я иду по месяцам, и в этом случае я d хотел бы, чтобы значение было годом-месяцем).
Я попытался добавить нижеследующее после вызова API, но безуспешно.
json_df<- as_tibble(json)
json_df <- data.frame("countries" = countries,
"dates" = dates,
"total_number" = json[["results"]]$total_number)
Как сохранить результаты в фрейме данных, а в идеале также изменить названия/даты стран?
Я думаю, вам просто нужно присвоить результат. my_results <- map_dfr(dates, ...
Да!! Спасибо @ГрегорТомас! Следующий сюжет теперь состоит в том, чтобы сделать ggplot total_ number для каждой страны-года... Дайте мне знать, если у вас есть какие-либо рекомендации по этому поводу (конечно, я буду работать над этим)
как было предложено в комментариях выше, попробуйте:
my_results <- map_dfr(dates, function(dates){
map_dfr(states, function(countries){
api_string <- paste0(base_string1, countries, base_string2, dates, end_string)
print(api_string)
json <- jsonlite::fromJSON(api_string)
data.frame("countries" = countries,
"dates" = dates,
"total_number" = json[["results"]]$total_number)
})
})
Привет @AndreaM, нет. Сообщение, на которое вы ссылаетесь, является моим собственным (я также связал его вверху). И это работает, за исключением последней части, где мне нужно сохранить его как фрейм данных.