请考虑tidyjson
GH page:
#devtools::install_github("sailthru/tidyjson")
library(tidyjson)
library(dplyr)
json <- '[{"name": "bob", "age": 32}, {"name": "susan", "age": 54}]'
json %>%
as.tbl_json %>%
gather_array %>%
spread_values(
name = jstring("name"),
age = jnumber("age")
)
# A tibble: 2 x 4
document.id array.index name age
* <int> <int> <chr> <dbl>
1 1 1 bob 32
2 1 2 susan 54
我已提取所有JSON密钥并将其放入向量中。我正在寻找一种有效的解决方案(只需jstring
即可创建表格数据集:
features <- c("name", "age", "gender", "education", "income", ...)
# spread_values(features = jstring(features))
如何在spread_values
步骤中概括该列表;即,在上面的示例中,如何将name
和age
冷凝为单线?列的名称始终与JSON键相同。我尝试应用家庭(lapply
/ sapply
)函数和for循环,但始终会遇到相同的赋值错误:
Error: unexpected '=' in...
干杯。
答案 0 :(得分:1)
查看此question
那里有很多答案,但是最简单的方法可能是使用jsonlite包:
library(tidyjson)
library(dplyr)
json <- '[{"name": "bob", "age": 32}, {"name": "susan", "age": 54}]'
json %>%
fromJSON
name age
1 bob 32
2 susan 54