Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
转换Json数组键';s作为csv列名和值_Json_R_Dplyr - Fatal编程技术网

转换Json数组键';s作为csv列名和值

转换Json数组键';s作为csv列名和值,json,r,dplyr,Json,R,Dplyr,我正在解析json数据以编写csv文件。我正在使用tidyjson包来完成这项工作 在某些情况下,我需要在单独的列中打印下面的所有主题值,并将分数作为一个值。意思是物理、数学将是一个列名,分数将有价值 { "results": { "subjects": [ { "subject": { "name": "Physics", "code": "PHY" }, "score": 70

我正在解析json数据以编写csv文件。我正在使用tidyjson包来完成这项工作

在某些情况下,我需要在单独的列中打印下面的所有主题值,并将分数作为一个值。意思是物理、数学将是一个列名,分数将有价值

{
  "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))
但这显示一个学生有多行。我需要以列值的形式显示每个主题和分数的单行

但这显示一个学生有多行。我需要以列值的形式显示每个主题和分数的单行

也就是说,您需要基于主题名称的唯一行吗?在这种情况下,你可以使用

如果您有一个名为
df
like的数据帧

subject <- c("phy", "math", "phy", "math")
Score <- c(10, NA, NA, 20)
df <- data.frame(subject, Score)
输出

subjectName Score
    phy       10
    math      20

您的示例JSON在语法上无效。您是否介意运行
dput(json_data)
并包含,以便其他用户可以复制您的示例?json已经修复,但所需输出的示例将帮助您
jsonlite::fromJSON(jsontxt)
创建了一个很好的嵌套数据帧结构,可以轻松地使用dplyr&purrThank@hrbrmstr!提供的JSON不包括“user_id”或任何表示记录属于某个学生的内容。需要一个更完整的示例。抱歉@steven请忽略“用户id”键。在这个json数据中,我有超过500个键,这就是为什么我只包含这一部分。谢谢@Emu,这解决了我的部分问题。我也在寻找一些整洁的JSON解决方案。
subjectName Score
    phy       10
    math      20