【问题标题】:Generalising tidyjson::spread_values概括 tidyjson::spread_values
【发布时间】:2019-12-20 20:03:51
【问题描述】:

考虑tidyjsonGH 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 步骤中概括列表;即在上面的示例中,我如何将nameage 压缩为单行?列的名称始终与 JSON 键相同。我尝试过应用系列(lapply/sapply)函数和 for 循环,但总是得到相同的赋值错误:

Error: unexpected '=' in...

干杯。

【问题讨论】:

  • 我很欣赏编辑;但是我实际上有兴趣了解为什么会发生此分配错误以及在 R 中创建此类循环的正确方法是什么。尽管了解如何概括此特定功能是有益的(并且有用),但我觉得一般应用程序将是价值更高。

标签: r function variable-assignment


【解决方案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

【讨论】:

    猜你喜欢
    • 2021-12-09
    • 2017-05-06
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 2022-01-09
    • 2015-01-05
    相关资源
    最近更新 更多