Разбор октет-потока во фрейм данных из данных API в R - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь проанализировать некоторые данные, которые я получаю из API, но у меня появляется следующая ошибка, когда я go используется из JSON ():

Error: parse error: trailing garbage
                                      01/28/20|000010102|St. John's|OZ
                     (right here) ------^

Скрипт, который не работает:

library(httr)
library(jsonlite)
library(tidyverse)


url<-"https://urldefense.com/v3/__http://files.airnowtech.org/airnow/yesterday/daily_data_v2.dat__;!!J30X0ZrnC1oQtbA!Yh5wIss-mzbpMRXugALJoWEKLKcg1-7VmERQwcx2ESK0PZpM5NWNml5s9MVgwHr5LD1i5w$ "

my_raw_result<-httr::GET(url)
my_content<-httr::content(my_raw_result,as="text")
my_content_from_json<-jsonlite::fromJSON(my_content)

Я проверил статус и его 200, и когда я запустил http_type(my_raw_result) Он говорит: «application / octet-stream. Это мой первый раз, когда я пытаюсь получить доступ данные из API, поэтому я понятия не имею, что это значит. Должен ли я использовать другую функцию для анализа? Буду признателен за любые рекомендации.

1 Ответ

1 голос
/ 30 января 2020

Этот источник данных не в формате JSON. Например, первые три строки выглядят следующим образом:

[1] "01/28/20|000010102|St. John's|OZONE-1HR|PPB|37|1|Newfoundland & Labrador DEC|-999|-999|47.652800|-52.816700|124000010102"         
[2] "01/28/20|000010102|St. John's|OZONE-8HR|PPB|35|8|Newfoundland & Labrador DEC|32|0|47.652800|-52.816700|124000010102"              
[3] "01/28/20|000010501|Grand Falls Windsor|OZONE-1HR|PPB|40|1|Newfoundland & Labrador DEC|-999|-999|49.019400|-55.802800|124000010501"

Было бы хорошо проверить с исходным источником определения формата, но это выглядит как формат с разделителями с |, используемым для отдельные столбцы. Если это правда, вот один из способов прочитать это из вашей переменной my_content:

my_content_from_delim <- my_content %>% textConnection %>% readLines %>% read.delim(text = ., sep = "|")
...