2016-07-13 13 views
0

Ich habe folgendes Protokoll, das ich in Rlesen Reihen mit unterschiedlicher Breite und mehr Header in R

MO    RSITE        COMB FHOP MODEL 
RXOTG-0   3BFR42        HYB SY G12 

        SWVERREPL  SWVERDLD  SWVERACT  TMODE 
           B1312R078G  B1312R078G SCM 

MO    RSITE        COMB FHOP MODEL 
RXOTG-1   3BFR42        HYB SY G12 

        SWVERREPL  SWVERDLD  SWVERACT  TMODE 
           B1312R078G  B1312R078G SCM 

Ich mag, dass

MO  RSITE COMB FHOP MODEL SWVERREPL SWVERDLD SWVERACT TMODE 
RXOTG-0 3BFR42 HYB  SY  G12     B1312R078G B1312R078G SCM 
RXOTG-1 3BFR42 HYB  SY  G12     B1312R078G B1312R078G SCM 

ich kann nicht lesen müssen lesen müssen read.fwf, weil jede Zeile eine unterschiedliche Breite hat und jede Zeile einen Header hat. Die einzige Möglichkeit, die ich lesen konnte, ist die Verwendung von read.table sep = "" und nach starken Transformationen hatte ich die gewünschte Ausgabe.

Jemand hat einen Vorschlag, mit weniger Codierung zu lesen?

Antwort

0

Sie können einen Weg mit readLines bekommen und dann Linien extrahieren, sie zusammenfügen und das text Argument in verwenden, um die Daten zu importieren.

f <- readLines("myFile.txt") 
header <- paste(f[1], f[3]) 
body <- sapply(seq(1, length(f), 6), function(i) paste(f[i+1], f[i+4])) 

read.table(header = FALSE, text = paste(body, collapse = "\n")) 

Dies lässt die leere Spalte aus. Wenn Sie dies benötigen oder andere Spalten leer sind, verwenden Sie stattdessen read.fwf.

0

Dies wird Ihre Probe lesen, aber fehlschlagen, wenn eine der Einträge nicht notiert eingebettet Leerraum hat:

data.frame(scan(text=txt, 
       what=list(MO="", RSITE="", COMB="", FHOP="", 
          MODEL="", SWVERREPL="", SWVERDLD="", 
          SWVERACT ="", TMODE=""), 
       multi.line=TRUE))[c(TRUE, FALSE), ] # removes extraneous extra "headers" 
#-------------- 
Read 4 records 
    MO RSITE COMB FHOP MODEL SWVERREPL SWVERDLD SWVERACT TMODE 
1 MO RSITE COMB FHOP MODEL RXOTG-0 3BFR42  HYB SY 
3 MO RSITE COMB FHOP MODEL RXOTG-1 3BFR42  HYB SY 
Verwandte Themen