Gewusst wie: importieren von JSON in R und konvertieren Sie es in den Tisch?
Ich spielen möchte, mit Daten, gespeichert im JSON-format. Aber ich bin sehr neu in R und haben wenig Ahnung von, wie das Spiel mit Daten. Sie können unten sehen, was ich geschafft. Aber zuerst, mein code:
library(rjson)
json_file <- "C:\\Users\\Saonkfas\\Desktop\\WOWPAPI\\wowpfinaljson.json"
json_data <- fromJSON(paste(readLines(json_file), collapse=""))
War ich in der Lage, die Daten:
for (x in json_data){print (x)}
Obwohl die Ausgabe sieht ziemlich roh:
[[1]]
[[1]]$wins
[1] "118"
[[1]]$losses
[1] "40"
# And so on
Beachten Sie, dass das JSON ist etwas verschachtelt. Konnte ich Tabellen erstellen mit Python, aber R scheint viel komplizierter.
Edit:
Mein JSON:
{
"play1": [
{
"wins": "118",
"losses": "40",
"max_killed": "7",
"battles": "158",
"plane_id": "4401",
"max_ground_object_destroyed": "3"
},
{
"wins": "100",
"losses": "58",
"max_killed": "7",
"battles": "158",
"plane_id": "2401",
"max_ground_object_destroyed": "3"
},
{
"wins": "120",
"losses": "38",
"max_killed": "7",
"battles": "158",
"plane_id": "2403",
"max_ground_object_destroyed": "3"
}
],
"play2": [
{
"wins": "12",
"losses": "450",
"max_killed": "7",
"battles": "158",
"plane_id": "4401",
"max_ground_object_destroyed": "3"
},
{
"wins": "150",
"losses": "8",
"max_killed": "7",
"battles": "158",
"plane_id": "2401",
"max_ground_object_destroyed": "3"
},
{
"wins": "120",
"losses": "328",
"max_killed": "7",
"battles": "158",
"plane_id": "2403",
"max_ground_object_destroyed": "3"
}
],
Post einen Teil Ihrer json-Daten. Versuchen Sie auch, die RJSONIO Paket.
und/oder haben einen Blick auf die jemals so etwas neueren
und/oder haben einen Blick auf die jemals so etwas neueren
rjsonlite
Paket hier beschrieben: public.opencpu.org/posts/jsonlite-a-smarter-json-encoder
InformationsquelleAutor Aidis | 2014-01-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
fromJSON
eine Liste zurückgibt, können Sie die*apply
Funktionen gehen durch jedes element.Es ist relativ einfach (wenn man weiß, was zu tun ist!) es zu konvertieren, um eine "Tabelle" (data frame ist die richtige R-Terminologie).
InformationsquelleAutor nico
Finde ich
jsonlite
ein wenig mehr Benutzer freundlich für diese Aufgabe. Hier ist ein Vergleich von drei JSON-parsing-Pakete (voreingenommen zu Gunsten derjsonlite
)Wenn Sie möchten, zu kollabieren diese Liste von Namen in eine neue Spalte, ich empfehle
dplyr::bind_rows
eher alsdo.call(rbind, data)
Beachten Sie, dass die Spalten möglicherweise nicht den Typ, den Sie erwarten (beachten Sie die Spalten sind alle Zeichen da alle zahlen wurden in der zitierten bereitgestellten JSON-Daten)!
Bearbeiten Nov. 2017: Ein Ansatz zur Typkonvertierung wäre, die Nutzung
mutate_if
zu erraten, die beabsichtigte Art der Charakter-Spalten.reshape2
könnten Sierbind.pages
ausjsonlite
, die möglicherweise in der Lage zu gehen, in einem Aufruf mitfromJSON
Ordentlich! Ich hatte nicht bemerkt, dass Funktion. Obwohl in diesem Fall es etwas tut, ähnlich in der Wirkung auf
do.call(rbind, data)
in, dass es nicht erhalten das Spiel# als neue variable (wenn das wichtig ist für die OP)was ist der beste Weg, um die richtigen Spaltentypen? Wenn ich konvertieren der json-Datei in csv-und import in R bekomme ich die richtigen Typen, aber die einführenden gerade mit jsonlite gibt mir die falschen Typen.
leider kann ich deine Frage nicht beantworten, ohne zu wissen, was deine Daten Aussehen und was sind die Typen falsch. Obwohl, ist es wahrscheinlich am einfachsten, einfach alles zu konvertieren, um einen Daten-frame, und dann zwingen die Spalten auf die gewünschte Arten, wenn nötig.
InformationsquelleAutor Eric
Ich lieber tidyjson über rjson und jsonlite es hat einen einfachen workflow für die Umwandlung mehrstufige verschachtelte json-Objekte, um 2-dimensionale Tabellen. Dein problem kann leicht gelöst werden, mit diesem Paket von github.
Ausgang
json
im code definiert? In den anderen Beispielen dieser vom Datenträger geladen wird.InformationsquelleAutor pauljeba