我有一個JSON檔案,我想把它轉換為一個表格。使用jsonlite庫很容易做到這一點。然而,如果檔案很大,那么轉換就會花費大量的時間。因此,我正在測驗一個tidyjson,希望能夠加快這一程序。
我的JSON檔案看起來如下:
我的JSON檔案看起來如下:
x = '[
{
"id": 1,
"A": [
{
"B": "b1",
"C": [
"c1"
]
}
]
},
{
"id": 2,
"A": [
{
"B": "b1",
"C": [
"c2"
]
}
]
}
]
'
我是這樣處理的:
library(tidyjson)
library(dplyr)
x %>% gather_array() %>% gather_array() %
spread_values(id = jstring("id")) %> %
enter_object("A") %>% gather_array %>%
spread_values(B = jstring("B")) %> %
enter_object("C") %> % gather_array() %>%
spread_values(C = jstring("C")) %> %
select(id, B, C)
結果我得到:
...JSON id B C
<chr>/span> <chr> <chr> <chr>
1 ""c1"" 1 b1 NA
2 ""c2"" 2 b1 NA
無法找出代碼中的問題,以及為什么它在C語言中不能很好地作業,非常感謝任何幫助。
UpDATE: 預期的輸出:
id B C
<chr> < chr> <chr>
1 1 b1 c1
2 2 b1 c2
更新2:
jsonlite方式:
y = jsonlite::fromJSON(x)
cbind(id = y$id,做。 call(rbind.data.frame, y$A))
id B C
1 1 B1 c1
2 2 b1 c2
不確定在這種情況下,這是使用jsonlite的最快方式。
uj5u.com熱心網友回復:
我們可以使用fromJSON從jsonlite
library(jsonlite)
library(tidyr)
library(dplyr)
fromJSON(x)%>%
unnest_wider(A) %>%
unnest(C) %>%
unnest(C)
輸出
# A tibble: 2 x 3
id B C
<int> < chr> <chr>/span>
1 1 b1 c1
2 2 b1 c2
或者另一個選項是
library(reticulate)
library(rrapply)
py_run_string(paste0("x ="。 x))
rrapply(py$x。 如何= 'bind')
A.1.C A.1.B id
1 c1 b1 1
2 c2 b1 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/306882.html
標籤:
