2016-06-29 4 views
0

Ich habe eine Sammlung von Tweets im JSON-Format erhalten und möchte sie in ein R data.frame konvertieren. Ich verwende den folgenden Code für die Konvertierung (rjson Bibliothek):Parsen von Twitter-Entities von JSON zu R

lines <- readLines(file,encoding = "UTF-8") 
json <- lapply(1:length(lines),function(i) as.data.frame(t(unlist(fromJSON(lines[i]))))) 
json <- lapply(1:length(json),function(i) json[[i]]) 
data <- rbind.fill(json) 

Datenkonvertierung gut durchgeführt wird, mit Ausnahme von userMentionEntities. Ich habe festgestellt, dass nur die erste Benutzer Erwähnung abgerufen werden kann. Anstelle einer Spalte userMentionEntities enthält der konvertierte data.frame eine Spalte für jedes userMention-Feld (id, name, screenName, start, end, _class), dessen Werte denen des zuerst genannten Benutzers entsprechen.

Gibt es eine Möglichkeit, alle Benutzer Erwähnungen in einen Tweet im data.frame aufzunehmen? Sollte ich Tweets-Daten auf andere Weise in R konvertieren?

Antwort

0

Das Paket hat eine nützliche parser. Twitter-Objekte können verwirrend werden (verschachtelter Datenrahmen innerhalb des verschachtelten Datenrahmens), aber ich denke, dass ich es größtenteils mit my parser aussortierte.

+0

Ich habe Ihre Lösung versucht und ich bekomme diesen Fehler. Ich bin neu bei R und weiß nicht, wie ich es beheben kann. 'Fehler in eval (expr, envir, enclos): konnte die Funktion" try_catch "nicht finden Aufrufe: map_df ... as_data_frame -> lst -> lst_ -> -> eval -> eval Ausführung angehalten –

+0

Mein Fehler. Das ist eine kleinere Version der Funktion tryCatch(), die Sie vor der Verwendung an Ihren Arbeitsbereich senden müssten. Wenn Sie Ihre eigene (n) Funktion (en) schreiben möchten, besuchen Sie https://github.com/mkearney/tfse/blob/master/R/data.frame.objects.R und https://github.com/pablobarbera/ streamR/blob/Master/streamR/R/parseTweets.R. Oder Sie könnten einfach eines dieser Pakete installieren und den Code verwenden, der bereits geschrieben wurde. – mkearney

+0

Beim Versuch, tfse Paket zu installieren, erhalte ich den folgenden Fehler: 'Hinweis: die Spezifikation für S3-Klasse" AsIs "im Paket 'jsonlite' entspricht einer aus Paket 'DBI': keine doppelten Klassendefinitionen für diese Klasse aktiviert. Warnung: S3-Methode 'c.string' wurde in Namensbereich deklariert, aber nicht Fehler bei namespaceExport (ns, Exporte) gefunden: undefined Exporte: get_package_pdf, get_wave, get_wave_data, gg_cols, load_tokens, sn2id, wave_path_name Fehler: Laden fehlgeschlagen ' –