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]]