2016-07-12 2 views
2

У меня есть файл данных json, из которого я хочу импортировать в R. Я попытался найти похожие блоги, но либо они получают данные из URL-адресов, либо синтаксис дал ошибки.Импорт данных из json-файла в R

Скажем, имя файла JSON является «Jsdata.json»

Как я могу получить данные из Jsdata.json в R и преобразовать его в формат/CSV первенствовать для лучшего изображения.

+3

Возможный дубликат [Получение импортированных данных JSON в кадр данных в R] (http://stackoverflow.com/questions/16947643/ get-imported-json-data-in-data-frame-in-r) – Psidom

+0

было бы целесообразно предоставить образец файла 'json', однако я не вижу, как это отличается от всех примеров, где Файл '.json' загружается с URL-адреса, затем анализируется. Вы просто заменяете свой файл вместо того, который был загружен. –

+0

Можете ли вы рассказать о синтаксисе, с помощью которого я могу читать эти данные из json-файла и анализировать его в csv способами, которыми мы обладаем? Я использую
treview <- "filepath"
json_data <- fromJSON (treview) – Joe

ответ

1

Чтобы подтвердить, это результат использования пакета rjson. Здесь должен быть явно указан параметр file, иначе функция будет обрабатывать его как строку json и выдавать ошибку.

myList = rjson::fromJSON(file = "JsData.json") 
myList 
# [[1]] 
# [[1]]$key 
# [1] "type1|new york, ny|NYC|hit" 
# 
# [[1]]$doc_count 
# [1] 12 


# [[2]] 
# [[2]]$key 
# [1] "type1|omaha, ne|Omaha|hit" 

# [[2]]$doc_count 
# [1] 8 


# [[3]] 
# [[3]]$key 
# [1] "type2|yuba city, ca|Yuba|hit" 

# [[3]]$doc_count 
# [1] 9 

Для того чтобы преобразовать это в кадр данных, вы можете сделать:

do.call(rbind, lapply(myList, data.frame)) 

#       key doc_count 
# 1 type1|new york, ny|NYC|hit  12 
# 2 type1|omaha, ne|Omaha|hit   8 
# 3 type2|yuba city, ca|Yuba|hit   9 

Написать кадр данных в csv с помощью write.csv(..., sep = "\t") и настроить Excel так, что разделитель соответствует вашему sep здесь должен работать.

И данные JsData.json выглядит следующим образом:

[{"key":"type1|new york, ny|NYC|hit","doc_count":12}, 
{"key":"type1|omaha, ne|Omaha|hit","doc_count":8}, 
{"key":"type2|yuba city, ca|Yuba|hit","doc_count":9}] 
+0

Явный вызов работал. Спасибо !. Можете ли вы также рассказать, как я могу разобрать эти данные, чтобы быть полезными в excel. – Joe

+0

Немного сложно сделать ваши данные подходящими для Excel, поскольку у вас есть запятая в ваших данных, но проверьте ответ, он дает некоторое представление, чтобы заставить его работать. – Psidom

+0

Спасибо Psidom. Я получил ошибку - Ошибка (functi on (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,: аргументы подразумевают различное количество строк: 1, 0

Не уверен, что я делаю неправильно. Я написал это only-do.call (rbind, lapply (myList, data.frame)) – Joe

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