从json文件创建Dataframe

时间:2017-02-09 18:55:23

标签: json r dataframe dplyr kaggle

我想从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)

这会出现以下错误:

  

错误:无法对类'list'的列colname进行分组

非常具体地说,我想要阅读的文件是本次参加比赛的train.json文件:

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

1 个答案:

答案 0 :(得分:1)

在操作之前,您需要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)