我试图从英国疫苗接种数据仪表板中读取一些数据,这些数据将一些数据编码为csv文件中的JSON。(下载链接是这里)从疫苗接种摄取,由接种日期,年龄,人口统计学上的网页(https://coronavirus.data.gov.uk/details/vaccinations?areaType=nation&areaName=England)。提出的问题是,我的代码不再成功地将JSON数据扩展为data.frame。当数据遇到None对象时,这似乎是一个解析问题。
我的代码读取数据如下(此代码在2021-11-25下载的数据上成功,但对2021-12-02数据失败)。下面的代码在fromJSON命令上失败,该命令现在到达“Arg”时出错:没有人声称存在词法错误。错误消息显示在代码下面。
library(tidyverse)
library(jsonlite)
#! Read in the latest national dashboard data
df <- read_csv("<filepath>")
df |>
mutate(vaccinationsAgeDemographics = map(vaccinationsAgeDemographics, ~fromJSON(. |> str_replace_all("'", "\"")))) |>
unnest(cols = c(vaccinationsAgeDemographics))Error: Problem with `mutate()` column `vaccinationsAgeDemographics`.
i `vaccinationsAgeDemographics = map(...)`.
x lexical error: invalid char in json text.
yVaccinationDatePercentage": None}, {"age": "16_17", "Vaccin
(right here) ------^一条简化的测试线如下:
fromJSON(df$vaccinationsAgeDemographics[1] |> str_replace_all("'", "\""))这将引发类似的错误:
Error: lexical error: invalid char in json text.
yVaccinationDatePercentage": None}, {"age": "16_17", "Vaccin
(right here) ------^发布于 2021-12-03 23:31:05
我设法解决了这个问题,因为jsonlite中讨论了可能的json映射:https://cran.r-project.org/web/packages/jsonlite/vignettes/json-mapping.pdf。
如果预先知道数据打算是数字类型,并且没有任何一个不包含在任何指示符名中,我们可以使用以下代码将None字符串替换为"NA":
library(tidyverse)
library(jsonlite)
df <- read_csv("C:\\Users\\joel.kandiah\\Downloads\\data_2021-Dec-02.csv")
fromJSON(df$vaccinationsAgeDemographics[1] |> str_replace_all("'", "\"") |> str_replace_all("None", "\"NA\""))https://stackoverflow.com/questions/70212171
复制相似问题