2017-02-09 76 views
0

我想从json文件创建正确的数据帧读取。我能够正确查看已创建的数据帧,但dplyr函数group_by无法正常工作。这可能是因为当我创建数据帧的str()时,它将每列都作为字符串列表,而不是一串字符串。我尝试以下操作:从json文件创建数据帧

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

+0

JSON文件是否深嵌套? –

+0

看包'tidyjson',这个很棒。 –

+0

是的,json文件是深嵌套的。我给tidyjson一看。我试过jsonlite,JSONRIO等等。所有这些都导致了同样的问题。 –

回答

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)