2017-08-03 8 views
0

質問は簡単だと思ったが、それは私を得た。JSONの不規則なデータからRのデータフレーム

{ "KEY1":[ "値1"]、
"KEY2": "値2"、 "値3"、 "value4"]、
「KEY3 Iは、JSONファイルは次のようである持っていると言います":[" VALUE5" 、 "value6"]}

私のようなデータフレームにそれらをインポートする:異なる引数を持つjsonliteとrjson fromJSON機能を試してみました

0 key value 
1 key1 value1 
2 key2 value2 
3 key2 value3 
4 key2 value4 
5 key3 value5 
6 key3 value6 

、それは数を返します。データフレームの代わりにリスト

他の質問からいくつかの回答を試みましたが、それでもわかりません。ヘルプが完成しました!

は非公開に機能をしようとしていたし、( R unlist changes namesからインスピレーション付き)醜いアプローチだ:私はあなたがこれを達成するために( utilsbaseパッケージからそれぞれ) stackrev機能を使用することができますね

json <- '{"key1":["value1"], 
    "key2":["value2", "value3", "value4"], 
    "key3":["value5", "value6"]}' 

jsonR <- fromJSON(txt = json) 

data.frame(key = rep(names(jsonR), lengths(jsonR)), value = unlist(jsonR , use.names=F)) 
+0

投稿したJSONは有効なJSONではありません。 –

+0

@RobbyCornelissenあなたは無効な部分について説明しますか? – Hanfu

+0

JSONで文字列を引用する必要があります。オブジェクトキーは文字列です。 –

答えて

0

を:

> json <- '{"key1":["value1"], 
+ "key2":["value2", "value3", "value4"], 
+ "key3":["value5", "value6"]}' 
> 
> df <- rev(stack(fromJSON(txt=json))) 
> colnames(df) <- c('key', 'value') 
> df 
    key value 
1 key1 value1 
2 key2 value2 
3 key2 value3 
4 key2 value4 
5 key3 value5 
6 key3 value6 
+0

美しい!ありがとうございましたmgc – Hanfu

+0

あなたはようこそ!この回答があなたの問題を解決した場合は、それを合格とマークしてください! – mgc

関連する問題