Seite 1 von 1

Fehler beim Einlesen *.csv

Verfasst: Di Nov 13, 2018 3:19 pm
von Regression
Guten Tag Zusammen,

beim Einlesen einer *.csv Datei werden einige Spalten nicht separiert, die meisten allerdings schon.
Angehängt ist ein kleiner Auszug aus >8k Problemzeilen.
SampleData.csv
(568 Bytes) 74-mal heruntergeladen
Das Separierungszeichen stellt dabei der Semicolon dar.
Eigentlich sollen es 15 Spalten sein.
Leider kann ich nicht erkennen, wo das Problem liegt und wie man es lösen könnte.
Das Einlesen im RStudio geschiet mit folgendem Code:

Code: Alles auswählen

library(readr)
SampleData <- read_delim("SampleData.csv", 
    ";", escape_double = FALSE, trim_ws = TRUE)
View(SampleData)
Ich Danke Euch vielmals für Lösungsvorschläge oder Anregungen!

Herzliche Grüße
Regression

Re: Fehler beim Einlesen *.csv

Verfasst: Di Nov 13, 2018 3:38 pm
von bigben
Hallo Regression,

ich weiß nicht, was das für komische Daten sind, aber in Deinem Beispiel erkenne ich zwei Probleme. Erstmal bekomme ich eine Fehlermeldung, dass die letzte=dritte Zeile unvollständig sei. Zum anderen passieren da ganz wilde Dinge mit Anführungszeichen in Deinem File.

Wenn ich R sage, dass an Semicolons getrennt wird, dass es Anführungszeichen nicht beachten soll und dass es nur die ersten zwei Zeilen lesen soll, kann ich Deine Daten lesen:

Code: Alles auswählen

> sampleData <- read.csv("http://forum.r-statistik.de/download/file.php?id=362", 
+                        header=FALSE, sep=";", quote=NULL, nrows=2)
> str(sampleData)
'data.frame':	2 obs. of  15 variables:
 $ V1 : Factor w/ 2 levels "\"1\"","\"2\"": 1 2
 $ V2 : Factor w/ 2 levels "\"Customer","\"Prospect": 1 2
 $ V3 : Factor w/ 2 levels "PET- Gest<e3>o de P de Ab, Uni",..: 2 1
 $ V4 : logi  NA NA
 $ V5 : Factor w/ 2 levels "{071094-DB92-E711-82F4-0050586A6C}",..: 1 2
 $ V6 : logi  NA NA
 $ V7 : Factor w/ 2 levels "BPT\\PTC14525",..: 2 1
 $ V8 : Factor w/ 2 levels "3060-132","8500-801": 2 1
 $ V9 : Factor w/ 2 levels "AVT","CAE": 1 2
 $ V10: Factor w/ 2 levels "Edificio, Lo 7  AVa Com Lus",..: 1 2
 $ V11: int  176633294 5040306
 $ V12: logi  NA NA
 $ V13: Factor w/ 2 levels "2017-09-06 08:14:31",..: 1 2
 $ V14: Factor w/ 2 levels "2018-04-26 20:07:46",..: 1 2
 $ V15: Factor w/ 2 levels "BPT - S - Dct - Coa\"\",\"",..: 2 1
Warum Du das readr package brauchst, ob sich das Problem der letzten ZEile häufiger in Deinem Datensatz findet etc., das weiß ich natürlich nicht. CSV ist aber kein wirklich standardisiertes Format und deshalb kann man mit Anführungszeichen machen, was man möchte.

Hilft das?

LG,
Bernhard

Re: Fehler beim Einlesen *.csv

Verfasst: Di Nov 13, 2018 3:45 pm
von bigben
Nachtrag: Wenn ich die letzte Zeile in Deiner Beispieldatei mit einem Return abschließe, dann kann ich die Datei jetzt problemlos lesen:

Code: Alles auswählen

> sampleData <- read.csv(choose.files(), 
+                        header=FALSE, sep=";", quote=NULL
+                        )
> str(sampleData)
'data.frame':	3 obs. of  15 variables:
 $ V1 : Factor w/ 3 levels "\"1\"","\"2\"",..: 1 2 3
 $ V2 : Factor w/ 2 levels "\"Customer","\"Prospect": 1 2 2
 $ V3 : Factor w/ 3 levels "Aul","PET- Gest<e3>o de P de Ab, Uni",..: 3 2 1
 $ V4 : logi  NA NA NA
 $ V5 : Factor w/ 3 levels "{071094-DB92-E711-82F4-0050586A6C}",..: 1 3 2
 $ V6 : logi  NA NA NA
 $ V7 : Factor w/ 3 levels "BPT\\PTC14525",..: 2 1 3
 $ V8 : Factor w/ 3 levels "2855-591","3060-132",..: 3 2 1
 $ V9 : Factor w/ 3 levels "AVT","CAE","Cios": 1 2 3
 $ V10: Factor w/ 3 levels "Edificio, Lo 7  AVa Com Lus",..: 1 2 3
 $ V11: int  176633294 5040306 5039644
 $ V12: logi  NA NA NA
 $ V13: Factor w/ 3 levels "2017-09-06 08:14:31",..: 1 2 3
 $ V14: Factor w/ 3 levels "2018-04-26 20:07:46",..: 1 2 3
 $ V15: Factor w/ 3 levels "BPT - S - Dct - Coa\"\",\"",..: 2 1 3
Soweit das gegebene Beispiel geht, ist das Problem also gelöst.

LG,
Bernhard

Re: Fehler beim Einlesen *.csv

Verfasst: Mi Nov 14, 2018 9:30 am
von Regression
Guten Morgen Bernhard,

du hast abloulut Recht, die Daten sind recht unsauber, allerdings habe ich, um die Daten online stellen zu können, auch einige "unkritische" Zeichen gelöscht.
Mit read.csv2 und quote = NULL, funktioniert es einwandfrei!
Danke!

Freundliche Grüße
Regression