2017-02-08 18 views
1

У меня есть файл, содержащий данные о событиях (щелкните данные о взаимодействии пользователей с приложением) в формате JSON, мне нужно его преобразовать в фрейм данных. Я использовал это:Преобразование файла JSON в data.frame в R

require(RJSONIO) 
result <- fromJSON('events_data.json',nullValue = NA) 
result <- do.call(rbind,lapply(result,data.frame,stringsAsFactors=FALSE)) 

, который генерирует этот результат

summary(result) 
        Length Class Mode  
_id    1  -none- character 
session   2  -none- list  
metrics   0  -none- list  
arrival_timestamp 1  -none- character 
event_type  1  -none- character 
event_timestamp 1  -none- character 
event_version  1  -none- character 
application  7  -none- list  
client   2  -none- character 
device   4  -none- list  
attributes  3  -none- character 

Когда я пытаюсь преобразовать этот список списка в кадр данных, я получаю сообщение об ошибке

Error in data.frame(locale = c("US", "en_US", "en"), platform = c("5.1.1", : 
    arguments imply differing number of rows: 3, 2, 1 

Вот данные file, click here (только для справки). Кто-нибудь может мне помочь. JSON файл содержит

{"_id":{"$oid":"57a30ce268fd0809ec4d194f"},"session":{"start_timestamp":{"$numberLong":"1470183490481"},"session_id":"def5faa9-20160803-001810481"},"metrics":{},"arrival_timestamp":{"$numberLong":"1470183523054"},"event_type":"OfferViewed","event_timestamp":{"$numberLong":"1470183505399"},"event_version":"3.0","application":{"package_name":"com.think.vito","title":"Vito","version_code":"5","app_id":"7ffa58dab3c646cea642e961ff8a8070","cognito_identity_pool_id":"us-east-1:4d9cf803-0487-44ec-be27-1e160d15df74","version_name":"2.0.0.0","sdk":{"version":"2.2.2","name":"aws-sdk-android"}},"client":{"cognito_id":"us-east-1:2e26918b-f7b1-471e-9df4-b931509f7d37","client_id":"ee0b61b0-85cf-4b2f-960e-e2aedef5faa9"},"device":{"locale":{"country":"US","code":"en_US","language":"en"},"platform":{"version":"5.1.1","name":"ANDROID"},"make":"YU","model":"AO5510"},"attributes":{"Category":"120000","CustomerID":"4078","OfferID":"45436"}} 
{"_id":{"$oid":"57a30ce268fd0809ec4d1950"},"session":{"start_timestamp":{"$numberLong":"1470183490481"},"session_id":"def5faa9-20160803-001810481"},"metrics":{},"arrival_timestamp":{"$numberLong":"1470183523054"},"event_type":"ContextMenuItemSelected","event_timestamp":{"$numberLong":"1470183500206"},"event_version":"3.0","application":{"package_name":"com.think.vito","title":"Vito","version_code":"5","app_id":"7ffa58dab3c646cea642e961ff8a8070","cognito_identity_pool_id":"us-east-1:4d9cf803-0487-44ec-be27-1e160d15df74","version_name":"2.0.0.0","sdk":{"version":"2.2.2","name":"aws-sdk-android"}},"client":{"cognito_id":"us-east-1:2e26918b-f7b1-471e-9df4-b931509f7d37","client_id":"ee0b61b0-85cf-4b2f-960e-e2aedef5faa9"},"device":{"locale":{"country":"US","code":"en_US","language":"en"},"platform":{"version":"5.1.1","name":"ANDROID"},"make":"YU","model":"AO5510"},"attributes":{"MenuItem":"OfferList","CustomerID":"4078"}} 
+0

* Что * ошибка? Как вы попытались это преобразовать? –

+3

PS - вы не можете ожидать, что люди загружают файл размером 130 МБ. Опубликуйте небольшой пример содержимого самого вопроса –

+0

Возможно, полезно ... прочитайте о [минимальном] (http://stackoverflow.com/help/mcve) и [воспроизводимом] (http://stackoverflow.com/a/5963610/3358272). Добро пожаловать в SO! Вопросы имеют гораздо более высокую вероятность ответа (и даже быстрее), когда вы читаете и слушаете эти два коротких руководства. В противном случае ваш вопрос обязательно будет проигнорирован, закрыт или неверно ответил, ни одна из которых вам не поможет. – r2evans

ответ

0

Я получил свой ответ, на самом деле я не читал весь json-файл.

library(rjson) 
library(plyr) 

json_file <- "events_data.json" 

con <- file(json_file, "r") 
input <- readLines(con,-1L) 
close(con) 

json_file2 <- ldply(lapply(input, function(x) t(unlist(fromJSON(x))))) 
0

Я смог скачать и прочитать в ваших данных просто отлично. Используйте библиотеку ndjson. Проверь это. Дайте мне знать, если он получает вас, что вы ищете ...

df<-ndjson::stream_in('events_data.json')

удачи. Cheers, NF

+0

Я получаю сообщение об ошибке при преобразовании его в кадр данных – aks2200

+0

Пробовал ли вы 'df <- as.data.frame (df)' ??? – nate