2016-03-29 6 views
1

Ich habe eine CSV-Datei mit ein paar Problemen.R - schlecht formatierte Daten - nicht übereinstimmende Angebote, CSV-Datei

--Mismatched zitiert

--Commas innerhalb dieser nicht übereinstimmen Anführungszeichen.

Das macht das Lesen der Daten in einem Albtraum.

ich gelesen habe reading badly formed csv in R - mismatched quotes

in meiner Datei lesen

mit
rawData = read.csv(curFile, stringsAsFactors=FALSE, header=TRUE, quote="") 

Wie hier vorgeschlagen: R Programming: "More Columns than Column Names"

Ich denke, die wegen der nicht ausgeglichenen Anführungszeichen, aber mit read.csv (quote = "") gibt mir immer noch diesen Fehler. Das Entfernen des quote = "" erlaubt es mir, die Datei einzulesen (nicht mehr Spalten als Spaltennamen Fehler), aber es liest immer noch falsch.

"@realdonaldtrump","870440000","870442502","Louis Tonelli","L00byLou26","364","292","",0,0,"Wed Mar 23 03:03:18 +0000 2016","RT @realDonaldTrump: Incompetent Hillary, despite the horrible attack in Brussels today, wants borders to be weak and open-and let the Musl&","7.1247e+17","712474777378820097","<a href=""http://twitter.com/download/iphone"" rel=""nofollow"">Twitter for iPhone</a>",NA,NA,NA,NA,NA,"7.1247e+17","712473816614772736","Wed Mar 23 02:59:29 +0000 2016","Donald J. Trump","realDonaldTrump","New York, NY","7259400","41","<a href=""http://twitter.com/download/android"" rel=""nofollow"">Twitter for Android</a>" 
Phone</a>" 
"@realdonaldtrump","4831200000","4831194209","Chris Mattingly","_chrismattingly","605","194","Missouri, USA",0,0,"Wed Mar 23 03:03:18 +0000 2016","@realDonaldTrump &lt;- Favorite buffoonish reply: ""Be careful, or [insert stock threat]"". How's the ""libel"" suit going? https://twitter.com","7.1247e+17","712474777064181761","<a href=""http://twitter.com/#!/download/ipad"" rel=""nofollow"">Twitter for iPad</a>",NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA 
"@realdonaldtrump","4799600000","4799556991","Leann Rehm  Lawrence","rehm_leann","101","295","",0,0,"Tue Mar 22 21:24:15 +0000 2016","RT  @TrumpDynastyUSA: KINDRED SPIRITSBrought to TEARS. 
LOVE &amp; HONOR the ""Apple of G-D's EYE!"" 
Deuteronomy 32:9-10 
@ElianaBenador @realDona&","7.1239e+17","712389451679342593","<a  href=""http://twitter.com/download/android"" rel=""nofollow"">Twitter for  Android</a>",NA,NA,NA,NA,NA,"7.1238e+17","712384968836718593","Tue Mar 22  21:06:26 +0000 2016","Lionhearted1","TrumpDynastyUSA","United  States","5153","5140","<a href=""http://twitter.com"" rel=""nofollow"">Twitter  Web Client</a>" 

Aus Gründen, die ich nicht kontrollieren kann, erscheinen die Daten in der Datei.

Was ich hier "einlesen" sollte, sind 3 Reihen/Beobachtungen.

Jede Zeile, die mit "@realdonaldtrump" beginnt, ist eine neue Beobachtung.

Wenn etwas darunter fällt, sollte es Teil der Beobachtung darüber sein, aber es sind eingebettet \ n oder \ r. Das sollte jedoch keine Rolle spielen, da sein Komma abgegrenzt ist.

Das verursacht jedoch Probleme, wenn Kommas dazwischen fallen.

Die Mismatch zitiert Problem einfach ist, mit der Linie "2"

+0

Ein einmaliger Datensatz oder etwas, das Sie wahrscheinlich immer wieder falsch formatiert bekommen? – rbm

+1

Haben Sie auch versucht, die Zeichenfolge durch "", "(und dann Entfernen der ersten und letzten" ") zu zerlegen – rbm

+0

Nein, ich werde dies einen Schuss geben! Und es wird wahrscheinlich wieder passieren, habe ich irgendwo im Reich von 2000 Dateien, und das passierte von Anfang an. – Jibril

Antwort

2

Versuchen package data.table'sfread(See page 31 of help file) zu sehen. Es führt automatisch mehrzeilige Vergleiche durch, um zu versuchen, nicht übereinstimmende Anführungszeichen und Kommas in der von Ihnen beschriebenen Weise zu identifizieren. Es ist nicht perfekt, aber es funktioniert viel besser als read.csv.

Es unterstützt auch das Einlesen nur in bestimmten Zeilenbereichen. Wenn Sie also die ungezogenen Zeilen identifizieren können, können Sie diese mit Ihrer ursprünglichen fread überspringen und dann getrennt behandeln, vorausgesetzt, dass dies nicht der Fall ist zu viele von ihnen.

Kurz vor der Verarbeitung Ihrer Daten mit PERL oder PHP zu identifizieren und korrigieren Sie Ihre falsch gemachte Angebote vor dem Lesen, das ist wahrscheinlich Ihre beste Wette von mit R.

Verwandte Themen