2014-08-29 3 views
0

Я пытался получить доступ к API, который появляется в следующем формате JSON:Доступ к объектам JSON в R

{ «Записках»: "данные представляют собой массив массивов (строк), имена столбцов для строк в row_headers "," row_headers ": [" Date "," Time Spent (seconds) "," Number of People "," Activity "," Category "," Productivity "]," rows ": [[ «2014-05-28T09: 00: 00», 538,1, «Gmail», «Email», - 1], [«2014-05-28T09: 00: 00», 450,1, «MS Outlook» , «Email», 1], [«2014-05-28T09: 00: 00», 374,1, «коммуникатор», «Общее Связь« Планирование », 1], [« 2014-05-28T09: 00 : 00 ", 315,1," MS Клиент служб терминалов "," Общее программное обеспечениеразвития», 2], [ "2014-05-28T09: 00: 00", 306,1, "fivethirtyeight.com", "Общие Новости \ u0026 мнение", -

Я был в состоянии импортировать этот словарь JSON с Python и бросьте в dataframe, используя следующий код:

data = json.load(urllib2.urlopen(url)) 
dataframe = pandas.DataFrame(data['rows'],columns=data['row_headers']) 

Однако, когда я пытаюсь сделать нечто подобное в R с помощью следующего кода, я получаю сообщение об ошибке, что R «не могу открыть файл 'NA': нет такого файла или каталога. "

json_file <- 'url of API key' 
raw_json <- fromJSON(file=json_file['raw']) 

Если кто имеет представление о том, как вы можете идти о загрузке объекта JSON, как я показываю выше в R dataframe, я бы очень признателен.

+0

'json_file ['raw']' возвращает 'NA'. Что вы пытаетесь сделать с индексом '' raw ''. (Это не работает R) – mnel

+0

Я пытался получить доступ к данным, которые, по словам заметок, находятся в массиве, называемом списком. –

+0

, но в вашем примере json_file - это символьная строка, обозначающая имя файла ... – mnel

ответ

0

Вот пример, который работает с использованием RJSONIO::fromJSON

library(RJSONIO) 

raw_json <- fromJSON(content = "https://www.rescuetime.com/anapi/data?rtapi_key=B63NUgr1wbXQS_I6tT8ON0LpvyPPcXNOd1mXfrG9&perspective=interval&format=json&resolution_time=hour&restrict_kind=activity&restrict_begin=2013-01-01&restrict_end=2014-08-28%22") 

Вы можете использовать data.table::rbindlist принуждать к data.table.

library(data.table) 
final_data <- rbindlist(lapply(raw_json[['rows']],setattr,'names', raw_json[['row_headers']])) 
+0

Спасибо за помощь. Я все еще сталкиваюсь с проблемой, что, когда я пытаюсь получить доступ к https, я получаю сообщение о том, что R "не может открыть соединение". Я видел поток Stack об этой проблеме (http://stackoverflow.com/questions/21852742/r-fromjson-cannot-open-the-connection) и по-прежнему не смог импортировать контент. Есть ли у вас какие-либо предложения о том, как это сделать? –

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