如何使用一个嵌套列表将 JSON 数据导入到 R 中?

问题描述 投票:0回答:1

我有一个 JSON 文件要导入到 R 中。这是数据的一部分:

{"data":[{"British Columbia":"BC","BC":"4.63"}, {"Alberta":"AB","AB":"4.15"}, {"Ontario":"ON","ON":"13.6"}]}

我需要将此数据转换为数据框,但导入会产生许多 NA 值。

我尝试了以下方法:

library(jsonlite)
jsonData <- fromJSON("filepath")
jsonData

输出:

$data
  British Columbia   BC Alberta   AB Ontario   ON Manitoba   MB Saskatchewan   SK
1               BC 4.63    <NA> <NA>    <NA> <NA>     <NA> <NA>         <NA> <NA>
2             <NA> <NA>      AB 4.15    <NA> <NA>     <NA> <NA>         <NA> <NA>
3             <NA> <NA>    <NA> <NA>      ON 13.6     <NA> <NA>         <NA> <NA>
4             <NA> <NA>    <NA> <NA>    <NA> <NA>       MB 1.28         <NA> <NA>
5             <NA> <NA>    <NA> <NA>    <NA> <NA>     <NA> <NA>           SK  1.1

这似乎是因为 JSON 文件开头的单个术语“数据”。如何避免这个问题?

所需输出:

British Columbia BC
BC               4.63
Alberta          AB
AB               4.15
Ontario          ON
ON               13.6
Manitoba         MB
MB               1.28
Saskatchewan     SK
SK               1.1
r json dataframe import jsonlite
1个回答
0
投票

鉴于最后 Nonte 中显示的

x
,使用
fromJSON
,提取数据部分,删除 NA 并将类型转换为正确的类型。

library (jsonlite)
library (purrr)

x |>
  fromJSON() |>
  _$data |>
  map_dfr(na.omit) |>
  type.convert(as.is = TRUE)

给予

# A tibble: 1 × 6
  `British Columbia`    BC Alberta    AB Ontario    ON
  <chr>              <dbl> <chr>   <dbl> <chr>   <dbl>
1 BC                  4.63 AB       4.15 ON       13.6

注意

x <- '{"data":[{"British Columbia":"BC","BC":"4.63"}, {"Alberta":"AB","AB":"4.15"}, {"Ontario":"ON","ON":"13.6"}]}'
© www.soinside.com 2019 - 2024. All rights reserved.