2016-11-10 3 views
0

Ich möchte diese Daten in R gesetzt importieren: http://www.stat.ufl.edu/~winner/data/retail92.datDaten lesen .dat in R

wirklich schätzen, wenn mir jemand helfen könnte. Ich versuchte read.csv, read.table, aber keiner von ihnen funktionierte. Ich weiß nicht, wie man die Länge der Variablen wie in SAS spezifiziert.

+0

Dieser Beitrag ist, was Sie für http://stackoverflow.com/questions/20806811/reading-a-space-delimited-text-file-where-first-column-also-has-spaces gesuchte – Tung

Antwort

2

Sie können eine Funktion verwenden, die Spalten basierend auf einer Anzahl von Zeichen (feste Breite) erkennt. Sie müssen jedoch Whitespace trimmen. Sie können die Funktion trimws verwenden.

xy <- read.fwf("http://www.stat.ufl.edu/~winner/data/retail92.dat", 
        widths = c(38, 6, 8, 8, 8)) 

> head(xy) 
             V1 V2 V3  V4  V5 
1 Acadia, LA        3.672 0.882 12.364 3.872 
2 Ada, ID        9.251 1.152 21.384 3.861 
3 Adams, CO        7.489 0.911 16.718 3.507 
4 Adams, IN        7.822 1.216 15.772 2.470 
5 Aiken, SC        6.451 1.032 18.474 19.201 
6 Alachua, FL       8.240 1.052 17.505 3.862 
> str(xy) 
'data.frame': 845 obs. of 5 variables: 
$ V1: Factor w/ 845 levels "Acadia, LA       ",..: 1 2 3 4 5 6 7 8 9 10 ... 
$ V2: num 3.67 9.25 7.49 7.82 6.45 ... 
$ V3: num 0.882 1.152 0.911 1.216 1.032 ... 
$ V4: num 12.4 21.4 16.7 15.8 18.5 ... 
$ V5: num 3.87 3.86 3.51 2.47 19.2 ... 
+1

Ich denke, es sollte 37 für die erste Spalte sein, sonst nimmst du die erste Ziffer, wenn die zweite Variable> = 10. Außerdem ist 'strip.white = TRUE' ein Argument, das du in der Eingangsstufe verwenden kannst -' read.fwf ("http://www.stat.ufl.edu/~winner/data/retail92.dat", widths = c (37, 6, 8, 8, 8), strip.white = TRUE) ' – thelatemail

+0

Datensatzformat ist angegeben [hier] (http://www.stat.ufl.edu/~winner/data/retail92.txt) das ist 36, 8, 8, 8, 8 – Tung

+0

Wenn Sie 'read_fwf' zusammen mit' read_empty' aus dem verwenden Das readr-Paket 'read_empty' ermittelt automatisch die Anfangs- und Endpositionen jeder Spalte an d Sie müssen nicht versuchen, sie selbst herauszufinden: 'mydata <- data.frame (read_fwf (file =" http://www.stat.ufl.edu/~winner/data/retail92.dat ", col_positions) = fwf_empty (file = "http://www.stat.ufl.edu/~winner/data/retail92.dat"))) '. Außerdem ist 'read_fwf' viel schneller. Weitere Informationen finden Sie unter '? Read_fwf'. – panman