2017-02-09 120 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)