2017-03-01 2 views
1

Ich habe eine data.json-Datei, die wie folgt aussieht:json zu Datenrahmen

{ 
    "A" : { 
    "data" : "a1 aa2 aaa3\na4 aa5 aaa6\na7 aa8 aaa9" 
    }, 
    "B" : { 
    "data" : "b1 bb2 bbb3\nb4 bb5 bbb6\nb7 bb8 bbb9" 
    }, 
    "C" : { 
    "data" : "c1 cc2 ccc3\nc4 cc5 ccc6\nc7 cc8 ccc9" 
    } 
} 

Ich mag dies von Datenrahmen auf eine Liste konvertieren (genannt output), ein data.frame für jeden Großbuchstaben. Die Zeichenfolge "\n" unterscheidet die Zeilen innerhalb eines Datenrahmens. Jeder Datenrahmen sollte wie folgt aussieht:

> print(output[[1]]) 

    X1 X2 X3 
1 a1 aa2 aaa3 
2 a4 aa5 aaa6 
3 a7 aa8 aaa9 

> print(output[[2]]) 

    X1 X2 X3 
1 b1 bb2 bbb3 
2 b4 bb5 bbb6 
3 b7 bb8 bbb9 

#and so on... 
+1

Haben Sie versucht, ein Paket wie 'jsonlite', mit dem Sie Ihre JSON-Objekte manipulieren können? –

+0

noch nicht, ich habe nur meine JSON-Datei mit Rjson-Bibliothek geladen – mat

Antwort

1

einfach die JSON-Datei als Liste laden rjson/jsonlite Bibliothek und jede Zeichenfolge als Datenrahmen mit read.table Funktion lesen:

lapply(rjson::fromJSON(file = "data.json"), function(x) read.table(text = x$data)) 

#$A 
# V1 V2 V3 
#1 a1 aa2 aaa3 
#2 a4 aa5 aaa6 
#3 a7 aa8 aaa9 

#$B 
# V1 V2 V3 
#1 b1 bb2 bbb3 
#2 b4 bb5 bbb6 
#3 b7 bb8 bbb9 

#$C 
# V1 V2 V3 
#1 c1 cc2 ccc3 
#2 c4 cc5 ccc6 
#3 c7 cc8 ccc9 
Verwandte Themen