Leer.csv, encabezado en primera línea, omitir segunda línea
Tengo un archivo CSV con dos filas de encabezado, la primera fila quiero ser el encabezado, pero la segunda fila 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 simplemente 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
Lo intenté data <- read.csv("HK Stocks bbg.csv", header = T, stringsAsFactors = FALSE, skip = 1)
pero eso vuelve:
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 de encabezado proviene de la segunda línea de mi archivo CSV, no de la primera alinear.
Gracias.
2 answers
Esto debería hacer el truco:
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 usando 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
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-07 13:48:50
Puede eliminar la(s) primera (s) línea (s) después del encabezado directamente desde el dataframe, para permitirle hacer esto en una línea:
df<-read.csv("test.txt",header=T)[-1,]
Si mi archivo de datos "prueba.txt " es lo 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 a tu pregunta exactamente, pero solo para generalizar la respuesta, también puedes saltar las Nth a las Mth líneas de esta manera:
df<-read.csv("test.txt",header=T)[-N:-M,]
Donde N y M son enteros, por supuesto.
Nota: Este método convierta todas las columnas en factor.
str(read.csv("test.csv", header = TRUE)[-1,])
# 'data.frame': 2 obs. of 2 variables:
# $ var1: Factor w/ 3 levels "2.3","4.5","units1": 1 2
# $ var2: Factor w/ 3 levels " units2","6.7",..: 3 2
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-10 09:00:50