2016-10-13 3 views
1

Ich habe Tweets in Form einer .csv Datei mit folgendem Schema Herunterladen: username;date;retweets;favorites;text;geo;mentions;hashtags;permalink CSV getrennt durch ';' Semikolons in einigen ihrer Eigenschaften haben und können nicht analysieren richtig

Das Problem ist, dass einige Tweets haben Semikolons ihre Textattribut, zum Beispiel „ich liebe dich, babe;)“

Wenn ich diese csv R zu importieren bin versucht, erhalte ich einige Datensätze mit falschen Schema, wie Sie hier sehen können: imported csv with read.csv

Ich denke, dieser Formatfehler ist wegen der csv-Parser-Gründung; im Textabschnitt und den Tisch dort trennend, wenn du verstehst, was ich meine.

Ich habe bereits versucht, mit dem regex passend: (;".*)(;)(.*";) und es mit ($1)($3) bis nicht mehr Einstimmungen gefunden zu ersetzen, aber der Fehler weiterhin in dem csv-Parsing.

Irgendwelche Ideen, um diese CSV-Datei zu säubern? Oder warum der CSV-Parser schlecht funktioniert?

Dank

Edit1 zum Lesen: Ich denke, dass es in der Struktur kein Problem mehr ist als ein schlechter gewählter Separator (';'),

Juan_Levas;2015-09-14 19:59;0;2;"Me sonrieron sus ojos; y me tembló hasta el alma.";Medellín,Colombia;;;https://twitter.com/Juan_Levas/status/643574711314710528

bei diesen Beispielen Datensatz suchen Dies ist ein gut formatierter Datensatz, aber ich denke, dass das Semikolon im Textabschnitt (markiert zwischen "") den Parser zwingt, den Textabschnitt in zwei Spalten zu unterteilen, in diesem Fall: "Me sonrieron sus ojos und y me tembló hasta el alma.";. Ist das möglich?

Auch ich verwende read.csv("data.csv", sep=';'), um die CSV zu einem Datenrahmen zu analysieren.

Edit2: Wie der Fehler zu reproduzieren:

  1. die csv von hier [~ 2 MB]: Download csv
  2. Do df <- read.csv('twit_data.csv', sep=';')
  3. den resultierenden Datenrahmen erkundet (Sie können es nach Datum sortieren , Retweets oder Favoriten und Sie sehen die Inkonsistenzen beim Parsen)
+1

Welche Funktion verwenden Sie? 'lesen.csv2'? Können Sie ein Beispiel Ihrer CSV-Datei bereitstellen? – Scarabee

+1

Wie haben Sie überhaupt eine schlechte CSV-Datei erhalten? Es ist nicht einfach schlecht formatierte Eingabedateien zu lesen. Ein mehr [reproduzierbares Beispiel] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) wäre hilfreich (Bilder von Daten sind nicht besonders nützlich). – MrFlick

+0

Ich beantwortete Ihre Fragen als 'Bearbeiten' der Hauptfrage. In der Zwischenzeit werde ich ein reproduzierbares Beispiel für Sie machen, um besser zu verstehen, was passiert. –

Antwort

0

Ihre CSV-Datei ist nicht richtig formatiert: th Das Problem ist nicht das Trennzeichen in Zeichenfeldern, es ist vielmehr die Tatsache, dass die " nicht maskiert sind.

Am besten erstellen Sie eine neue Datei mit einem geeigneten Format (normalerweise: RFC 4180).

Wenn es nicht möglich ist, die beste Option ist ein „intelligentes“ Werkzeug wie readr zu verwenden:

library(readr) 
df <- read_csv2('twit_data.csv') 

Es macht einen sehr guten Job auf Ihrer Datei. (Ich kann keinen offensichtlichen Analysefehler im resultierenden Datenrahmen sehen)

Verwandte Themen