Я пытаюсь загрузить json файл в data.frame в r. Мне повезло с функцией fromJSON в пакете jsonlite. Но я получаю вложенные списки и не уверен, как сгладить входные данные в двумерный data.frame. Jsonlite читает файл в виде data.frame, но оставляет некоторые вложенные списки в некоторых переменных.
Есть ли у кого-нибудь советы по загрузке JSON файла в файл data.frame, когда он читает с вложенными списками.
#*#*#*#*#*#*#*#*#*##*#*#*#*#*#*#*#*#*# HERE IS MY EXAMPLE #*#*#*#*#*#*#*#*#*##*#*#*#*#*#*#*#*#*#
# loads the packages
library("httr")
library( "jsonlite")
# downloads an example file
providers <- fromJSON( "http://fm.formularynavigator.com/jsonFiles/publish/11/47/providers.json" , simplifyDataFrame=TRUE )
# the flatten function breaks the name variable into three vars ( first name, middle name, last name)
providers <- flatten( providers )
# but many of the columns are still lists:
sapply( providers , class)
# Some of these lists have a single level
head( providers$facility_type )
# Some have lot more than two - for example nine
providers[ , 6][[1]]
Я хочу одну строку на npi и отдельные столбцы для каждого из списков отдельных списков - так что кадр данных имеет cols для "plan_id_type", "plan_id", "network_tier" девять раз, а может быть, имена кодов от От 0 до 8. Я смог использовать этот сайт: http://www.convertcsv.com/json-to-csv.htm, чтобы получить этот файл в двух измерениях, но поскольку я делаю сотни из них, я бы любить иметь возможность делать это динамично. Это файл: http://s000.tinyupload.com/download.php?file_id=10808537503095762868&t=1080853750309576286812811 - Я хотел бы получить файл с этой загрузкой структуры как data.frame, используя функцию fromJson
Вот несколько вещей, которые я пробовал; Поэтому я подумал о двух подходах; Сначала: используйте другую функцию для чтения в Json файле, я просмотрел
rjson but that reads in a list
library( rjson )
providers <- fromJSON( getURL( "https://fm.formularynavigator.com/jsonFiles/publish/11/47/providers.json") )
class( providers )
и я попробовал RJSONIO - я попробовал это Получение импортированных данных json в фрейм данных в R
json-data-into-a-data-frame-in-r
library( RJSONIO )
providers <- fromJSON( getURL( "https://fm.formularynavigator.com/jsonFiles/publish/11/47/providers.json") )
json_file <- lapply(providers, function(x) {
x[sapply(x, is.null)] <- NA
unlist(x)
})
# but When converting the lists to a data.frame I get an error
a <- do.call("rbind", json_file)
Итак, второй подход, который я пробовал, состоит в том, чтобы преобразовать все списки в переменные в моем data.frame
detach("package:RJSONIO", unload = TRUE )
detach("package:rjson", unload = TRUE )
library( "jsonlite")
providers <- fromJSON( "http://fm.formularynavigator.com/jsonFiles/publish/11/47/providers.json" , simplifyDataFrame=TRUE )
providers <- flatten( providers )
Я могу вытащить один из списков, но из-за пропусков я не могу объединиться с моей файловой рамкой
a <- data.frame(Reduce(rbind, providers$facility_type))
length( a ) == nrow( providers )
Я также пробовал следующие предложения: Преобразование вложенного списка в dataframe. Хорошо, как и некоторые другие вещи, но не повезло
a <- sapply( providers$facility_type, unlist )
as.data.frame(t(sapply( providers$providers, unlist )) )
Любая помощь очень ценится