2016-06-22 5 views
1

Das Programm, das ich meine Daten aus (PowerBI) exportieren speichert die Daten als .csv-Datei, aber die erste Zeile der Datei ist sep=, und dann die zweite Zeile der Datei hat die Überschrift (Spaltennamen).Laden csv in R mit `sep =,` als erste Zeile

Beispiel gefälschten CSV-Datei:

sep=, 
Initiative,Actual to Estimate (revised),Hours Logged,Revised Estimate,InitiativeType,Client 
FakeInitiative1 ,35 %,320.08,911,Platform,FakeClient1 
FakeInitiative2,40 %,161.50,400,Platform,FakeClient2 

ich diesen Befehl bin mit der Datei zu lesen:

initData <- read.csv("initData.csv", 
        row.names=NULL, 
        header=T, 
        stringsAsFactors = F) 

aber ich erhalte einen Fehler, dass es die falsche Anzahl der Spalten ist (weil es denkt, dass die erste Zeile die Anzahl der Spalten angibt).

Wenn ich header=F statt dann lade, aber wenn ich dann tun names(initData) <- initData[2,] dann haben die Namen Leerzeichen und ungültige Zeichen und es bricht den Rest meines Programms. Abstoßend.

Kann jemand R sagen, diese erste Zeile zu ignorieren? Ich kann in die CSV-Datei in einem Texteditor gehen und löschen Sie die erste Zeile manuell, bevor ich es jedes Mal laden (wenn ich das tue, funktioniert alles gut), aber ich muss eine Reihe von Dateien exportieren, und das ist ein bisschen dumm und langweilig.

Jede Hilfe würde sehr geschätzt werden.

+3

überspringen versuchen = 1 (extra Argument read.csv) - dies die erste Zeile überspringen wird – lebatsnok

+0

es nicht „denken, die erste Zeile es die Anzahl der Spalten erzählt“ - es erwartet nur alle Linien die gleiche Anzahl von Spalten haben. – lebatsnok

+0

Siehe 'data.table :: fread', es * versucht * die Daten wie beabsichtigt einzulesen. – zx8754

Antwort

1

Es gibt viele Möglichkeiten, dies zu tun. Hier ist eine:

all_content = readLines("initData.csv") 
skip_first_line = all_content[-1] 
initData <- read.csv(textConnection(skip_first_line), 
        row.names=NULL, 
        header=T, 
        stringsAsFactors = F) 
+0

Ausgezeichnet. Es fällt mir auf, dass ich auch einen 'if'-Befehl einbauen könnte, um zu überprüfen, ob die erste Zeile tatsächlich' sep =, 'ist, bevor ich sie überspringe. Vielen Dank. – seth127