Lesen.CSV funktioniert nicht wie erwartet in R
Bin ich überfragt. Normalerweise read.csv
funktioniert wie erwartet, aber ich habe ein Problem, wenn das Verhalten unerwartet. Es ist sehr wahrscheinlich user-error meinerseits, aber jede Hilfe wird geschätzt.
Hier ist die URL für die Datei
http://nces.ed.gov/ipeds/datacenter/data/SFA0910.zip
Hier ist mein code, um die Datei zu entpacken, und Lesen Sie es in:
URL <- "http://nces.ed.gov/ipeds/datacenter/data/SFA0910.zip"
download.file(URL, destfile="temp.zip")
unzip("temp.zip")
tmp <- read.table("sfa0910.csv",
header=T, stringsAsFactors=F, sep=",", row.names=NULL)
Hier ist mein problem. Wenn ich öffnen Sie die Daten der csv-Daten in Excel, die Daten Aussehen, als erwartet. Wenn ich die Daten in R, die erste Spalte ist tatsächlich benannte Zeile.Namen. R Lesen (in einer extra Zeile der Daten, aber ich kann nicht herausfinden, wo der "Fehler" Auftritt, verursacht Reihe.Namen einer Spalte. Einfach, wie es aussieht, werden die Daten verschoben über.
Jedoch, was merkwürdig ist ist, dass die Letzte Spalte in R nicht zu enthalten scheinen die richtigen Daten.
Hier sind ein paar Zeilen aus den ersten paar Spalten:
tmp[1:5,1:7]
row.names UNITID XSCUGRAD SCUGRAD XSCUGFFN SCUGFFN XSCUGFFP
1 100654 R 4496 R 1044 R 23
2 100663 R 10646 R 1496 R 14
3 100690 R 380 R 5 R 1
4 100706 R 6119 R 774 R 13
5 100724 R 4638 R 1209 R 26
Irgendwelche Gedanken darüber, was ich tun könnte falsch?
- Nicht immer davon ausgehen, Excel korrekt stellt den Inhalt der CSV-Datei. Öffnen Sie die CSV in einem text-editor statt (nicht, dass dies die Ursache des Problems, sondern als eine Allgemeine Regel).
- entfernen Sie die
row.names = NULL
argument. - das ist seltsam, die Sie nicht brauchen, sich zu authentifizieren, der in die Website. Ich habe gerade versucht es aus dem Netz und es automatisch heruntergeladen, die Datei auf meinem computer. Ich bin mit Chrome.
- Ich versuchte dies auch, aber es hat nicht funktioniert. Was merkwürdig ist ist, dass ist, dass die Letzte Spalte von Daten in R scheint in Ordnung zu sein. Es ist nicht so, ich kann nur shift wie die Spaltennamen.
- Ich weiß, ich habe schon Beispiele gesehen, wo Excel analysiert, falsch. Das heißt, die Daten scheinen OK zu sein. Andere Versionen der Daten (der letzten Jahre) funktionieren, gibt es etwas seltsam mit dieser bestimmten Datei, die ich nicht sehen kann durch das Scannen der Datei in einem text-editor.
- Die zahlen 100654 sollten die Werte in der Spalte UNITID. Die Werte, die sich auf die UNITID, wie oben gezeigt, gehören zu Spalte XSCUGRAD. Nochmals vielen Dank.
- Ich denke, diese Punkte zu dem problem, aber ich kann nicht finden, die betreffende Zeile in der csv -
dim(read.csv("sfa0910.csv", header = F, skip = 1))
ist6852 452
in der Erwägung, dasslength(unlist(strsplit(readLines('sfa0910.csv',1), ',')))
ist451
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe eine Lösung, vielleicht basierend auf mnel Kommentare
alle Spalten nach der ersten eine zusätzliche Trennzeichen, die in excel ignoriert.
die moral von der Geschicht .... hören Joshua Ulrich 😉
Quick-fix. Öffnen Sie die Datei in excel, und speichern Sie es. Dies wird auch löschen Sie die extra-seperators.
Alternativ
Mein Tipp: verwenden Sie zählen.Felder() als eine schnelle Diagnose, wenn durch Trennzeichen getrennte Dateien Verhalten sich nicht wie erwartet.
Erstens zählen die Anzahl der Felder, die über Tabelle():
Ihnen mitteilt, dass alle, aber eine der Zeilen enthält, 452 Felder. Also, was ist die aberrante Leitung?
Die erste Zeile ist das problem. Auf Inspektion, alle Zeilen außer der ersten werden beendet durch 2 Kommas.
Die Frage ist nun: was bedeutet das? Soll da ein zusätzliches Feld in der Kopfzeile, die weggelassen wurde? Oder waren die 2 Kommas angehängt, um die Zeilen in der Fehlermeldung? Es kann am besten sein, Sie zu Kontaktieren, wer generiert die Daten, wenn möglich, zu klären, die Mehrdeutigkeit.
count.fields
. Eine nette Funktion für diese Art der Verarbeitung durch den blicken von ihm.Ich weiß, du hast eine Antwort gefunden aber deine Antwort hat mir geholfen heraus zu finden, ich werde teilen:
Wenn Sie Lesen, in der R eine Datei mit unterschiedlichen Anzahl der Spalten, die für unterschiedliche Zeilen, wie diese:
wäre es zu Lesen-in füllen Sie die fehlenden Spalten mit NAs, wie dieser:
ABER!
Wenn die Zeile mit dem größten Spalten ist nicht die erste Zeile, wie hier:
dann wäre das Lesen in einer etwas verwirrenden Weise:
(überwältigend, bevor Sie herausfinden, das problem und ganz einfach nach!)
Hoffe es kann jemand helfen!