2
我正在解析json数据来编写csv文件。我正在使用tidyjson包来完成这项工作。将json数组键转换为csv列名和值
在某些情况下,我需要在单独的列中打印下面的所有主题值,并将得分作为值。意义物理学,数学将是一个专栏名称,分数将会有价值。
{
"results": {
"subjects": [
{
"subject": {
"name": "Physics",
"code": "PHY"
},
"score": 70
},
{
"subject": {
"name": "Mathematics",
"code": "MATH"
},
"score": 50
}
]
}
}
我已经试过如下:
json_data %>%
as.tbl_json %>%
gather_array %>%
spread_values(user_id = jstring("user_id")) %>%
enter_object("results") %>%
enter_object("subjects") %>%
gather_array("subjects") %>%
spread_values(score = jstring("score")) %>%
enter_object("subject") %>%
spread_values(subject = jstring("subject")) %>%
mutate(Physics = case_when(.$name == "Physics" ~ score)) %>%
mutate(Mathematics = case_when(.$name == "Mathematics" ~ score))
但是,这显示了一个学生多行。我需要显示每个主题和得分作为列值的单行。
您例如JSON在语法上不有效。你会介意运行'dput(json_data)'并且包含其他用户可以重现你的例子吗? –
“json”已被修复,但是所需输出wld帮助人员可以帮助您。 'jsonlite :: fromJSON(jsontxt)'产生一个很好的嵌套数据帧结构,可以很容易地用dplyr&purrr – hrbrmstr
Thanks @hrbrmstr!提供的JSON不包含“user_id”或任何可能表明记录属于单个学生的内容。需要一个更完整的例子。 –