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」或任何可能表明記錄屬於單個學生的內容。需要一個更完整的例子。 –