2016-12-29 6 views
0

Da ich die TXT-Datei nicht zur Verfügung stellen kann ich verwende ich nur die Situation beschreiben ...zusätzliche Spalten erstellt werden, wenn read.table mit

Die Textdatei keine fehlenden Werte und ist ein Register -getrennte Textdatei oder zumindest scheint es so zu sein. Wenn ich Tab-getrennte Trennzeichen verwende, scheint es in Ordnung zu sein. Die Spaltenüberschriften werden mit Namen versehen, die Leerzeichen enthalten (z. B. Alter des Übergeordneten).

Wenn ich die Daten mit der folgenden Codezeile lade, sieht es so aus, als ob alles richtig geladen wird. Ich lande jedoch mit einer Reihe von doppelten Spalten.

Zum Beispiel - „Age of Parent“ wird als Age.of.Parent relabeled werden, da Sie keine Leerzeichen in Spaltennamen haben können, aber es wird eine zweite Säule, die mit den Werten identisch ist aber hat den Namen - Age.of.Parent1

Frage: Was muss ich tun, um sicherzustellen, dass es keine dieser ‚Duplikat‘ Spalten erstellt werden? Die Spalte Age.of.Parent1 ist eindeutig nicht im Datensatz, aber von vielleicht 20 Spalten komme ich auf insgesamt 30 (10 neue Duplikate mit dieser '1' am Ende).

read.table('mydata.txt', header=TRUE, stringsAsFactors= FALSE, sep='\t') 
+1

Sie können 'check.names = false' in' read.table', aber in Bezug auf die doppelte Spalten Problem, ist es nicht klar, ohne eine reproduzierbares Beispiel – akrun

+0

Ich kann dies reproduzieren, wenn ich eine Textdatei mit zwei Spalten mit den identischen Namen "Age of Parent" und "Age of Parent" erstelle und sie mit 'read.table' lese. Wahrscheinlich müssen Sie Ihre Quelldatei sorgfältig überprüfen, zumindest die Zeilen, in denen die zusätzlichen Spalten Daten enthalten. Mögliche Traps können doppelte Tabs "\ t \ t" sein oder das Ende der Zeile entfernt werden. Ohne jedoch die Daten zumindest in den obersten Zeilen anzuzeigen, ist dies alles spekulativ. – Uwe

Antwort

0

Hier ist ein Beispiel, um zu zeigen, wie ein Datenrahmen in einer Tab-separierten Datei gespeichert und daraus gelesen werden kann.

library(caroline) 

Age <- c(20, 30, 50) 
Names <- c("Name1", "Name2", "Name3") 
df <- data.frame(Age, Names) 
colnames(df) <- c("Age of Parents", "Names of Parents") 

#writing the data frame to a tab delimited text file 
write.delim(df, file = "foo.txt") 

#reading the tab delimited text file 
#The argument fill is logical. If TRUE then in case the rows have unequal length, blank fields are implicitly added. 
read.delim(file="foo.txt", header = TRUE, sep = "\t", fill = TRUE) 

Ausgabe sieht wie folgt aus:

enter image description here

Verwandte Themen