2017-02-09 18 views
0

Я хочу создать правильное чтение фрейма данных из json-файла. Я могу правильно просмотреть созданный фрейм данных, но dplyr функция group_by не работает на нем. Вероятно, потому, что когда я создаю str() созданного фрейма данных, он дает каждому столбцу список строк, а не вектор строк. Я пытаюсь следующее:Создание Dataframe из 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'

Очень определенно, файл, который я пытаюсь прочитать это файл train.json в этом kaggle конкурсе:

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) 

 Смежные вопросы

  • Нет связанных вопросов^_^