从 json 文件创建数据框

Creating Dataframe from a json file

我想创建一个从 json 文件中读取的正确数据框。我能够正确查看创建的数据框,但 dplyr 函数 group_by 对其不起作用。这可能是因为当我对创建的数据框执行 str() 时,它会将每一列作为字符串列表而不是字符串向量。我正在尝试以下操作:

    require(jsonlite)

    train_file = 'train.json'

    train_data <- fromJSON(train_file)

    rb = data.frame(sapply(train_data,c), stringsAsFactors = FALSE)

    rbs = rb %>% slice(1:10)

    rbsg = rbs %>%
      group_by(colname)

这会产生以下错误:

Error: cannot group column colname, of class 'list'

非常具体地说,我要读取的文件是本次 kaggle 竞赛中的 train.json 文件:

https://www.kaggle.com/c/two-sigma-connect-rental-listing-inquiries/data

您需要 unnest() 感兴趣的列,然后再对其进行操作(例如,在使用 group_by() 或其他 dplyr 动词之前):

library(jsonlite)
library(tidyverse)

rbs <- fromJSON("train.json") %>%
  bind_rows()

rbsg <- rbs %>%
  unnest(bedrooms) %>%
  group_by(bedrooms)

rbs_filtered <- rbs %>%
  unnest(bathrooms) %>%
  filter(bathrooms > 5)