2012-07-26 9 views
35

Ci scusiamo in anticipo per la semplicità di questa domanda. Sto cercando di importare un file .dat da un sito web in R con il seguente codice:import dat file in R

www = "http://www.nilu.no/projects/ccc/onlinedata/ozone/CZ03_2009.dat" 
data <- read.delim(www, header = TRUE, sep="\t") 

voglio accedere alla porzione Valore della data.frame, tuttavia, sono incerti circa le dimensioni dei dati .frame, se digito ncol (dati) restituisce 1 che mi aspettavo tre. Come accedo alla "terza" colonna di questo data.frame?

+1

+1 per [esempio riproducibile] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). – Andrie

risposta

39

Il file dat ha alcune righe di informazioni extra prima dei dati effettivi. li salta con l'argomento skip:

read.table("http://www.nilu.no/projects/ccc/onlinedata/ozone/CZ03_2009.dat", 
      header=TRUE, skip=3) 

Un modo semplice per controllare questo se si ha familiarità con il set di dati è quello di utilizzare prima readLines per controllare poche righe, come di seguito:

readLines("http://www.nilu.no/projects/ccc/onlinedata/ozone/CZ03_2009.dat", 
      n=10) 
# [1] "Ozone data from CZ03 2009" "Local time: GMT + 0"   
# [3] ""       "Date  Hour  Value" 
# [5] "01.01.2009 00:00  34.3" "01.01.2009 01:00  31.9" 
# [7] "01.01.2009 02:00  29.9" "01.01.2009 03:00  28.5" 
# [9] "01.01.2009 04:00  32.9" "01.01.2009 05:00  20.5" 

Qui, possiamo vedere che i dati effettivi iniziano da [4], quindi sappiamo saltare le prime tre righe.

Aggiornamento

Se davvero voleva solo la colonna Value, si potrebbe fai da:

as.vector(
    read.table("http://www.nilu.no/projects/ccc/onlinedata/ozone/CZ03_2009.dat", 
       header=TRUE, skip=3)$Value) 

Anche in questo caso, readLines è utile per aiutare a capire il nome effettivo del colonne che verranno importate.

Ma non vedo molto vantaggio nel fare ciò leggendo l'intero set di dati ed estraendolo in seguito.

+0

grazie. Quindi, da questo come definirei una variabile chiamata 'Valore'. dati $ Il valore non funziona e ncol (dati) è uguale a 1? Digito as.vector (data $ Value) e R restituisce NULL. – KatyB

+1

Si prega di guardare di nuovo l'esempio. Probabilmente * hai * ancora 'sep =" \ t "', che metterà tutto in una singola colonna 'data.frame'; il vero file che stai cercando di leggere è separato da * spazio *, non da * tab *. Quindi, se vuoi il set di dati completo, usa la soluzione nella parte superiore della mia risposta. Se vuoi solo la colonna 'Valori' come vettore separato, usa la parte dopo l'aggiornamento. Spero che abbia senso. – A5C1D2H2I1M1N2O1R2T1

+0

Grazie. Ho perso quella parte della soluzione. Funziona alla grande. – KatyB