2016-07-27 57 views
1

Ich habe eine Reihe von TXT-Dateien auf die gleiche Weise formatiert. Die ersten paar Zeilen befassen sich mit Dateiinformationen. Es gibt keine Variablennamen. Wie Sie sehen können, sind Leerzeichen zwischen Faktoren inkonsistent, aber Spalten sind linksbündig oder rechtsbündig. Ich weiß, dass SAS Daten mit diesem Format direkt lesen könnte und sich fragt, ob R ähnliche Funktionen bietet.lesen TXT-Dateien mit linksbündig Daten, aber inkonsistente Anzahl von Leerzeichen in R

Ich versuchte read.csv Funktion, um diese Daten zu laden, und ich möchte sie in einem dat.frame mit 3 Spalten speichern, während es sich herausstellt die Option sep = "\ s" (mehrere Leerzeichen) in der Funktion nicht erkennen kann regulären Ausdruck.

Also habe ich versucht, diese Daten in einer Variablen zuerst zu lesen und die Funktion substr zu verwenden, um sie wie folgt zu teilen. schritt1

Factor<-data.frame(substr(Share$V1,1,9),substr(Share$V1,9,14),as.numeric(substr(Share$V1,15,30))) 

schritt2

Aber das ist ziemlich unintelligent, und müssen die Räume zwischen zählen. Ich wandern, wenn es eine Methode gibt, um Daten direkt als drei Spalten zu laden.

> Factor 
    F T  S 
1 +B2P  A  1005757219 
2 +BETA  A  826083789 

Antwort

0

Wir read.table verwenden Sie es als 3 Spalten zu lesen

read.table(text=as.character(Share$V1), sep="", header=FALSE, 
       stringsAsFactors=FALSE, col.names = c("FactorName", "Type", "Share")) 
# FactorName Type  Share 
#1  +B2P A 1005757219 
#2  +BETA A 826083789 
#3  +E2P A 499237181 
#4  +EF2P A 38647147 
#5  +EFCHG A 866171133 
#6 +IL1QNS A 945726018 
#7 +INDMOM A 862690708 

Eine andere Möglichkeit wäre es aus der Datei direkt zu lesen, skip ping die Kopfzeile und ändern Sie die Spaltennamen

read.table("yourfile.txt", header=FALSE, skip=1, stringsAsFactors=FALSE, 
       col.names = c("FactorName", "Type", "Share")) 
+1

Ich sehe, wo ich falsch codiert. Das Standard-Argument sep = "" (kein Leerzeichen) bezieht sich auf ein oder mehrere Leerzeichen, aber ich habe sep = "" (ein Leerzeichen) eingegeben, was zu exakter Übereinstimmung und falscher Aufteilung führte. die Spalten.So funktioniert die Funktion read.csv auch für dieses Problem. – Mengqiu