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