2012-07-26 25 views
35

Disculpas de antemano por la simplicidad de esta pregunta. Estoy tratando de importar un archivo .dat de un sitio web en I con el siguiente código:importar archivo dat en R

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

quiero acceder a la porción del valor de la hoja.de.datos, sin embargo, estoy seguro acerca de las dimensiones de los datos .frame, si escribo ncol (data), devuelve 1, que esperaba tres. ¿Cómo accedo a la "tercera" columna de este data.frame?

+1

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

Respuesta

39

El archivo dat tiene algunas líneas de información adicional antes de los datos reales. Saltar con el argumento skip:

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

Una manera fácil de comprobar esto si no está familiarizado con el conjunto de datos es utilizar primero readLines para comprobar unas pocas líneas, de la siguiente manera:

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" 

Aquí, podemos ver que los datos reales comienzan en [4], por lo que sabemos omitir las tres primeras líneas.

actualización

Si realmente solo querían la columna de la Value, que podría hace eso por:

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

Una vez más, readLines es útil para ayudarnos a averiguar el nombre real de la columnas que estaremos importando.

Pero no veo mucho ventaja de hacerlo sobre leer todo el conjunto de datos y extraer más tarde.

+0

gracias. Entonces, a partir de esto, ¿cómo definiría una variable llamada 'Valor'? data $ Value no funciona, y ncol (data) es igual a 1? Escribo como .vector (data $ Value) y R devuelve NULL. – KatyB

+1

Por favor, mire el ejemplo nuevamente. Probablemente * todavía * tenga 'sep =" \ t "', que pondrá todo en una sola columna 'data.frame'; el archivo real que está tratando de leer está separado por * espacio *, no por * pestañas *. Entonces, si quiere el conjunto de datos completo, use la solución en la parte superior de mi respuesta. Si solo desea la columna 'Valores' como un vector separado, use la parte después de la actualización. Espero que esto tenga sentido. – A5C1D2H2I1M1N2O1R2T1

+0

Gracias perdí esa parte de la solución. Funciona genial. – KatyB

Cuestiones relacionadas