Buenas tardes para todos,
Utilizo R 2.10.0 Patched en Windows XP 32-bits con 4GB RAM en un procesador
Intel Core 2 Duo de 2.4 GHz. En este momento estoy trabajando con una base
de datos X de dimensión
R> dim(X)
[1] 297558 11
que se encuentra almacenada en formato ".txt" y que tiene 1 variable
alfanumérica (identificador) y 10 numéricas. Estoy leyendo X via
read.table() y el tiempo tarda el sistema es:
R> system.time(X <- read.table(f, header = TRUE, sep= ","))
user system elapsed
17.50 0.11 18.59
Me gustaría saber si alguien conoce alguna manera de reducir
(sustancialmente) este tiempo.
Muchas gracias,
Jorge Ivan Velez
[[alternative HTML version deleted]]
Hola Jorge, La manera más fácil es especificar la clase de los datos de cada columna usando colClasses. De esa manera R no tiene que establecer las clases programáticamente. Si quieres un proceso aún más rápido revisa ?scan. También puedes leer los datos en "chunks¨ usando readLines. Saludos, Francisco Francisco J. Zagmutt Vose Consulting 1643 Spruce St., Boulder Boulder, CO, 80302 USA www.voseconsulting.com Jorge Ivan Velez wrote:> Buenas tardes para todos, > > Utilizo R 2.10.0 Patched en Windows XP 32-bits con 4GB RAM en un procesador > Intel Core 2 Duo de 2.4 GHz. En este momento estoy trabajando con una base > de datos X de dimensión > > R> dim(X) > [1] 297558 11 > > que se encuentra almacenada en formato ".txt" y que tiene 1 variable > alfanumérica (identificador) y 10 numéricas. Estoy leyendo X via > read.table() y el tiempo tarda el sistema es: > > R> system.time(X <- read.table(f, header = TRUE, sep= ",")) > user system elapsed > 17.50 0.11 18.59 > > Me gustaría saber si alguien conoce alguna manera de reducir > (sustancialmente) este tiempo. > > Muchas gracias, > > Jorge Ivan Velez > > [[alternative HTML version deleted]] > > > ------------------------------------------------------------------------ > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Francisco,
Muchas gracias por el ''tip''! Indudablemente definir el
argumento
colClasses de antemano reduce el tiempo de lectura en más del 50%. Estos son
los resultados con el mismo archivo:
R> system.time(X <- read.table(f, header = TRUE,
colClasses = c(rep(''character'', 2),
rep(''numeric'',9)),
sep= ","))
user system elapsed
6.65 0.08 7.27
He estado explorando una posibilidad con scan() pero no he tenido éxito aún.
El argumento ''what'' parece ser el problema. La opción que
mencionas con
readLines() es importante. La exploraré luego.
En espera de otros comentarios,
Jorge Ivan Velez
2009/12/8 Francisco J. Zagmutt <>
> Hola Jorge,
>
> La manera más fácil es especificar la clase de los datos de cada columna
> usando colClasses. De esa manera R no tiene que establecer las clases
> programáticamente. Si quieres un proceso aún más rápido revisa ?scan.
> También puedes leer los datos en "chunks¨ usando readLines.
>
> Saludos,
>
> Francisco
>
> Francisco J. Zagmutt
> Vose Consulting
> 1643 Spruce St., Boulder
> Boulder, CO, 80302
> USA
> www.voseconsulting.com
>
>
> Jorge Ivan Velez wrote:
>
> Buenas tardes para todos,
>
> Utilizo R 2.10.0 Patched en Windows XP 32-bits con 4GB RAM en un procesador
> Intel Core 2 Duo de 2.4 GHz. En este momento estoy trabajando con una base
> de datos X de dimensión
>
> R> dim(X)
> [1] 297558 11
>
> que se encuentra almacenada en formato ".txt" y que tiene 1
variable
> alfanumérica (identificador) y 10 numéricas. Estoy leyendo X via
> read.table() y el tiempo tarda el sistema es:
>
> R> system.time(X <- read.table(f, header = TRUE, sep= ","))
> user system elapsed
> 17.50 0.11 18.59
>
> Me gustaría saber si alguien conoce alguna manera de reducir
> (sustancialmente) este tiempo.
>
> Muchas gracias,
>
> Jorge Ivan Velez
>
> [[alternative HTML version deleted]]
>
>
>
> ------------------------------
>
> _______________________________________________
> R-help-es mailing
listR-help-es@r-project.orghttps://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
[[alternative HTML version deleted]]
Bengoechea Bartolomé Enrique (SIES 73)
2009-Dec-09 13:49 UTC
[R-es] Reducción de tiempo en lectura de datos
Hola,
Si los datos no cambian a menudo, la solución más sencilla es leerlos una vez en
memoria con cualquiera de las opciones que te han comentado, y luego guardarlos
en otro fichero distinto con el formato binario de R usando save(). Las lecturas
posteriores las haces del nuevo fichero con load() y serán mucho más rápidas.
Otra opción es leer los datos usando el paquete "sqldf", que genera
una base de datos SQLLite en un fichero temporal y luego la lee a R, lo que
suele ser algo más rápido que la importación directa. Tienes un ejemplo aquí:
http://code.google.com/p/sqldf/#Example_13._read.csv.sql
Un saludo,
Enrique
-----Original Message-----
Date: Tue, 8 Dec 2009 15:38:46 -0500
From: Jorge Ivan Velez <jorgeivanvelez en gmail.com>
Subject: [R-es] Reducción de tiempo en lectura de datos
To: R-help-es <r-help-es en r-project.org>
Message-ID:
<317737de0912081238t34a2892bmb8cdec0439c5312d en mail.gmail.com>
Content-Type: text/plain
Buenas tardes para todos,
Utilizo R 2.10.0 Patched en Windows XP 32-bits con 4GB RAM en un procesador
Intel Core 2 Duo de 2.4 GHz. En este momento estoy trabajando con una base de
datos X de dimensión
R> dim(X)
[1] 297558 11
que se encuentra almacenada en formato ".txt" y que tiene 1 variable
alfanumérica (identificador) y 10 numéricas. Estoy leyendo X via
read.table() y el tiempo tarda el sistema es:
R> system.time(X <- read.table(f, header = TRUE, sep= ","))
user system elapsed
17.50 0.11 18.59
Me gustaría saber si alguien conoce alguna manera de reducir
(sustancialmente) este tiempo.
Muchas gracias,
Jorge Ivan Velez
[[alternative HTML version deleted]]