sirve - read.csv, encabezado en primera línea, omita segunda línea
procedimiento para leer datos csv con r (2)
Tengo un archivo CSV con dos filas de encabezado, la primera fila quiero ser el encabezado, pero la segunda fila que quiero descartar. Si hago el siguiente comando:
data <- read.csv("HK Stocks bbg.csv", header = T, stringsAsFactors = FALSE)
La primera fila se convierte en el encabezado y la segunda fila del archivo se convierte en la primera fila de mi marco de datos:
Xaaaaaaaaa X X.1 Xbbbbbbbbbb X.2 X.3
1 Date PX_LAST NA Date PX_LAST NA
2 31/12/2002 38.855 NA 31/12/2002 19.547 NA
3 02/01/2003 38.664 NA 02/01/2003 19.547 NA
4 03/01/2003 40.386 NA 03/01/2003 19.547 NA
5 06/01/2003 40.386 NA 06/01/2003 19.609 NA
6 07/01/2003 40.195 NA 07/01/2003 19.609 NA
Quiero omitir esta segunda fila del archivo CSV y solo obtener
X1.HK.Equity X X.1 X2.HK.Equity X.2 X.3
2 31/12/2002 38.855 NA 31/12/2002 19.547 NA
3 02/01/2003 38.664 NA 02/01/2003 19.547 NA
4 03/01/2003 40.386 NA 03/01/2003 19.547 NA
5 06/01/2003 40.386 NA 06/01/2003 19.609 NA
6 07/01/2003 40.195 NA 07/01/2003 19.609 NA
Intenté data <- read.csv("HK Stocks bbg.csv", header = T, stringsAsFactors = FALSE, skip = 1)
pero eso retorna:
Date PX_LAST X Date.1 PX_LAST.1 X.1
1 31/12/2002 38.855 NA 31/12/2002 19.547 NA
2 02/01/2003 38.664 NA 02/01/2003 19.547 NA
3 03/01/2003 40.386 NA 03/01/2003 19.547 NA
4 06/01/2003 40.386 NA 06/01/2003 19.609 NA
5 07/01/2003 40.195 NA 07/01/2003 19.609 NA
6 08/01/2003 40.386 NA 08/01/2003 19.547 NA
La fila del encabezado proviene de la segunda línea de mi archivo CSV, no de la primera línea.
Gracias.
Esto debería funcionar:
all_content = readLines("file.csv")
skip_second = all_content[-2]
dat = read.csv(textConnection(skip_second), header = TRUE, stringsAsFactors = FALSE)
El primer paso usando readLines
lee todo el archivo en una lista, donde cada elemento de la lista representa una línea en el archivo. A continuación, descarta la segunda línea utilizando el hecho de que la indexación negativa en R significa select all but this index
. Finalmente, alimentamos estos datos a read.csv
para procesarlos en un data.frame
.
Puede pelar las primeras líneas después del encabezado directamente desde el marco de datos, para permitirle hacer esto en una línea:
df<-read.csv("test.txt",header=T)[-1,]
si mi archivo de datos "test.txt" es el siguiente:
var1, var2
units1, units2
2.3,6.8
4.5,6.7
esto me da
> read.csv("test.txt",header=T)[-1,]
var1 var2
2 2.3 6.8
3 4.5 6.7
Esto responde exactamente a su pregunta, pero solo para generalizar la respuesta, también puede omitir la N- ésima a la M- ésima línea de esta manera:
df<-read.csv("test.txt",header=T)[-N:-M,]
donde N y M son enteros, por supuesto.