Wie Sie zu schreiben json mit Kindern aus R
Ich möchte ein R-Daten.frame in ein JSON-Objekt, um es zu verwenden für die Vorbereitung von Daten-Visualisierungen mit d3.js. Ich fand eine Menge von Fragen, fragte, wie man JSON in R, aber nur sehr wenige, wie das schreiben von Daten von R auf JSON.
Ein besonderes problem ist, dass die JSON-Datei muss verschachtelt werden, indem Faktoren, d.h. Spalten die Daten.frame. Ich denke, dass das schreiben von verschachtelten Listen könnte eine Lösung sein, aber ich habe schon Fehler beim erstellen einer verschachtelten Liste von Daten.Rahmen 🙁
Habe ich preprared ein Beispiel:
dies stellt meine Daten.frame (genannt "MyData").
ID Location Station Size Percentage
1 Alpha Zeta Big 0.63
2 Alpha Zeta Medium 0.43
3 Alpha Zeta small 0.47
4 Alpha Yota Big 0.85
5 Alpha Yota Medium 0.19
6 Alpha Yota small 0.89
7 Beta Theta Big 0.09
8 Beta Theta Medium 0.33
9 Beta Theta small 0.79
10 Beta Meta Big 0.89
11 Beta Meta Medium 0.71
12 Beta Meta small 0.59
nun, ich möchte es in etwas wie dieses gültige json-format, einschließlich der Kinder-Knoten:
{
"name":"MyData",
"children":[
{
"name":"Alpha",
"children":[
{
"name":"Zeta",
"children":[
{
"name":"Big",
"Percentage":0.63
},
{
"name":"Medium",
"Percentage":0.43
},
{
"name":"Small",
"Percentage":0.47
}
]
},
{
"name":"Yota",
"children":[
{
"name":"Big",
"Percentage":0.85
},
{
"name":"Medium",
"Percentage":0.19
},
{
"name":"Small",
"Percentage":0.89
}
]
}
]
},
{
"name":"Zeta",
"children":[
{
"name":"Big",
"Percentage":0.63
},
{
"name":"Medium",
"Percentage":0.43
},
{
"name":"Small",
"Percentage":0.47
}
]
},
{
"name":"Yota",
"children":[
{
"name":"Big",
"Percentage":0.85
},
{
"name":"Medium",
"Percentage":0.19
},
{
"name":"Small",
"Percentage":0.89
}
]
}
]
}
Wenn jemand könnte mir helfen, ich wäre sehr dankbar!
danke
- IMO, das hat nichts zu tun mit JSON per se, nur ähneln sich diese Struktur innerhalb von R, und du bist gut zu gehen.
- Sie haben Recht, das ist nichts JSON-spezifisch. meine Frage war vor allem darüber, wie man diese in einer bestimmten Struktur.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist ein rekursiver Ansatz, der sauberer ist:
x2 <- filter(x, x[1] != ""); listSplit <- split(x2[-1], x2[1], drop = TRUE)
direkt nachif(ncol(x)>2){
und alles lassen, was sonst der gleichen?listSplit[[y]]
wird wahrscheinlich basierend auf indices statt der Spalte name.Unter Verwendung einer Kombination von
split
undsubset
können bekommen, was Sie wollen. Zum Beispiel"Size"
und"Percentage"
getrennt sind. Jeder Staat der Variablen, d.h. Groß, sollten mit Ihrer Prozentualen Wert in einer einzelnen Zeile. Auch die"children"
agrument fehlt. Ich werde versuchen zu hantieren, mit Ihrer Idee aufzuteilen. thxSize
und hässliche regex. Es ist nicht genau das, was Sie wollen, aber es vielleicht in der Nähe.Ich bin Molchen Schutzfolie von user1609452 Antwort und die Beantwortung der Frage über nicht reguläre Datei-Hierarchien. Wenn Sie eine Spalte, wo einige Daten haben Kinder und manche nicht, verwenden Sie die folgende:
Grundsätzlich prüfen wir, ob die aktuelle Zeile hat mehr Kinder, oder wenn Sie es einfach haben muss, um die Größe angehängt.