2017-02-12 16 views
1

私はRでロードし、データフレームに変換してからさらに操作を行う必要がある.jsonファイルを持っています。私のjsonファイルの頭文字は次のようになります:jsonファイルを読み込んでRに変換する

{"_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、session、metricsの1つで、そのようなものがたくさんあります。

次のようにRでrjsonライブラリを使って変換しようとしました。 events_jasonはファイル名です:

library(rjson) 
result <- fromJSON(file = "events_json.json") 
print(result) 



$`_id` 
$`_id`$`$oid` 
[1] "57a30ce268fd0809ec4d194f" 


$session 
$session$start_timestamp 
$session$start_timestamp$`$numberLong` 
[1] "1470183490481" 


$session$session_id 
[1] "def5faa9-20160803-001810481" 


$metrics 
list() 

$arrival_timestamp 
$arrival_timestamp$`$numberLong` 
[1] "1470183523054" 


$event_type 
[1] "OfferViewed" 

$event_timestamp 
$event_timestamp$`$numberLong` 
[1] "1470183505399" 


$event_version 
[1] "3.0" 

$application 
$application$package_name 
[1] "com.think.vito" 

$application$title 
[1] "Vito" 

$application$version_code 
[1] "5" 

$application$app_id 
[1] "7ffa58dab3c646cea642e961ff8a8070" 

$application$cognito_identity_pool_id 
[1] "us-east-1:4d9cf803-0487-44ec-be27-1e160d15df74" 

$application$version_name 
[1] "2.0.0.0" 

$application$sdk 
$application$sdk$version 
[1] "2.2.2" 

$application$sdk$name 
[1] "aws-sdk-android" 



$client 
$client$cognito_id 
[1] "us-east-1:2e26918b-f7b1-471e-9df4-b931509f7d37" 

$client$client_id 
[1] "ee0b61b0-85cf-4b2f-960e-e2aedef5faa9" 


$device 
$device$locale 
$device$locale$country 
[1] "US" 

$device$locale$code 
[1] "en_US" 

$device$locale$language 
[1] "en" 


$device$platform 
$device$platform$version 
[1] "5.1.1" 

$device$platform$name 
[1] "ANDROID" 


$device$make 
[1] "YU" 

$device$model 
[1] "AO5510" 


$attributes 
$attributes$Category 
[1] "120000" 

$attributes$CustomerID 
[1] "4078" 

$attributes$OfferID 
[1] "45436" 

しかし、上記のように最初の行を表示しているだけです。表示されていないID、セッション、メトリック、イベントタイプなどがあります。

私は自分のjsonファイル全体を読んで、他の行も見て適切なデータフレームに変換できるように助けてください。

UPDATE:

私は解決策を発見しました。 ndjsonパッケージを使用して、私は希望のデータフレームを取得しています。

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

に役立ちます。この時点でエラーを再現することはできませんので、助けを開始することはできません – GGamba

+0

JSONは検証されません。再現可能なデータセットを提供してください。 –

+0

@GGamba - 私はsnapshoptを提供しました。チェックしてください! –

答えて

0

ファイルは1つのjsonオブジェクトではなく、各行に1つのjson obejctsのリストです。それぞれの行を読んで、それぞれをjsonから変換する必要があります。それをする
一つの方法は次のとおりです。

d <- lapply(strsplit(readLines("events_data2.json"),"\n"), fromJSON) 

・ホープこれはあなたが私たちのJSON行/レコードの少なくともいくつかを与える必要があり

+0

これはndjsonファイルです。 'jsonlite :: stream_in()'または 'ndjson :: stream_in()'はもっと適切な解決策です – hrbrmstr

関連する問題