Skip to content

[R-es] unir en .dbf luego de aplicar read.xls a varios archivos

5 messages · Sebastian Kruk, Jorge I Velez, miguel.angel.rodriguez.muinos en sergas.es +1 more

#
Estimados:

Tengo un directorio con varios archivos Excel quiero importarlos todos
y grabarlos en un único archivo .dbf.

Haciendolo uno por uno lo logro de la siguiente manera (solo tomo 2 archivos):

archivos <- list.files(pattern = 'xls')

a1 <- read.xls(archivos[1],
perl="C:\\strawberry\\perl\\bin\\perl.exe",skip=12,dec=",",header=F,as.is=T)
a2 <- read.xls(archivos[2],
perl="C:\\strawberry\\perl\\bin\\perl.exe",skip=12,dec=",",header=F,as.is=T)

a11 <- cbind(a1[1,1:2],a1[4:which(a1=="Art. 14")-1,1:7])
a21 <- cbind(a2[1,1:2],a1[4:which(a1=="Art. 14")-1,1:7])

a3 <- rbind(a11,a21)

Si lo hago con lapply me queda mal.

Saludos,

Sebastián.
#
Hola Sebastian.

Otra opción es utilizar XLConnect
http://cran.r-project.org/web/packages/XLConnect/index.html

Es un poco más "potente" pues te permite manipular libros Excel (o leer parcialmente libros y/o hojas) desde R.
Creo recordar que con readWorksheetFromFile podrías hacer lo que necesitas.

Un Saludo,
Miguel.



-----Mensaje original-----
De: r-help-es-bounces en r-project.org [mailto:r-help-es-bounces en r-project.org] En nombre de Jorge I Velez
Enviado el: martes, 10 de enero de 2012 17:50
Para: Sebastian Kruk
CC: r-help-es en r-project.org
Asunto: Re: [R-es] unir en .dbf luego de aplicar read.xls a varios archivos

Hola Sebastian,

No tengo Windows a la mano, pero podrias intentar con RODBC (que no usa
Perl):

[...]


2012/1/10 Sebastian Kruk <>
Nota: A información contida nesta mensaxe e os seus posibles documentos adxuntos é privada e confidencial e está dirixida únicamente ó seu destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe, por favor elimínea. A distribución ou copia desta mensaxe non está autorizada.

Nota: La información contenida en este mensaje y sus posibles documentos adjuntos es privada y confidencial y está dirigida únicamente a su destinatario/a. Si usted no es el/la destinatario/a original de este mensaje, por favor elimínelo. La distribución o copia de este mensaje no está autorizada.

See more languages: http://www.sergas.es/aviso_confidencialidad.htm
#
Hola

Por las dudas, a mi me paso el tener algunos archivos *.xls, todos de la 
misma empresa, sobre el mismo tema, eran idénticos, pero ..., no tan 
idénticos, tuve que unirlos a mano y me llevo bastante tiempo.

Si tiene problemas verifique los archivos *.xls

-----Mensaje original----- 
From: miguel.angel.rodriguez.muinos en sergas.es
Sent: Wednesday, January 11, 2012 5:29 AM
To: jorgeivanvelez en gmail.com ; residuo.solow en gmail.com
Cc: r-help-es en r-project.org
Subject: Re: [R-es] unir en .dbf luego de aplicar read.xls a varios archivos

Hola Sebastian.

Otra opción es utilizar XLConnect
http://cran.r-project.org/web/packages/XLConnect/index.html

Es un poco más "potente" pues te permite manipular libros Excel (o leer 
parcialmente libros y/o hojas) desde R.
Creo recordar que con readWorksheetFromFile podrías hacer lo que necesitas.

Un Saludo,
Miguel.



-----Mensaje original-----
De: r-help-es-bounces en r-project.org [mailto:r-help-es-bounces en r-project.org] 
En nombre de Jorge I Velez
Enviado el: martes, 10 de enero de 2012 17:50
Para: Sebastian Kruk
CC: r-help-es en r-project.org
Asunto: Re: [R-es] unir en .dbf luego de aplicar read.xls a varios archivos

Hola Sebastian,

No tengo Windows a la mano, pero podrias intentar con RODBC (que no usa
Perl):

[...]


2012/1/10 Sebastian Kruk <>
Nota: A información contida nesta mensaxe e os seus posibles documentos 
adxuntos é privada e confidencial e está dirixida únicamente ó seu 
destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe, 
por favor elimínea. A distribución ou copia desta mensaxe non está 
autorizada.

Nota: La información contenida en este mensaje y sus posibles documentos 
adjuntos es privada y confidencial y está dirigida únicamente a su 
destinatario/a. Si usted no es el/la destinatario/a original de este 
mensaje, por favor elimínelo. La distribución o copia de este mensaje no 
está autorizada.

See more languages: http://www.sergas.es/aviso_confidencialidad.htm

_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es
2 days later
#
Hola Jorge. Lamentablemte no funcionó. Cambié worksheet = 1 por
worksheet = "Hoja1". Las columnas con datos numéricos las importa
vacías la función FromExcel.

Te paso:
'data.frame':   58 obs. of  7 variables:
 $ V1: chr  "101" "Código" "111" "119" ...
 $ V2: chr  "BARRACA MAIN                                    "
"Material" "Alambre negro N° 14
                                                            " "Arena
gruesa
                                          " ...
 $ V3: chr  "" "Unidad" "kg                  " "m3                  " ...
 $ V4: chr  "Precio en $" "DICIEMBRE" "62.45" "545.76" ...
 $ V5: chr  "Precio en $" "ENERO" "" "" ...
 $ V6: chr  "Variación" "DIC-ENE" "-100" "-100" ...
 $ V7: chr  "2012-01-01 " "Observaciones " " " " " ...
'data.frame':   21 obs. of  7 variables:
 $ V1: chr  "309" "Código" "701" "702" ...
 $ V2: chr  "CSA                                         " "Material"
"Vidrio plano de 3mm. colocado
                                    " "Vidrio plano de 4 mm. colocado

 " ...
 $ V3: chr  "" "Unidad" "m2" "m2" ...
 $ V4: chr  "Precio en $" "DICIEMBRE" "649" "811" ...
 $ V5: chr  "Precio en $" "ENERO" "" "" ...
 $ V6: chr  "Variación" "DIC-ENE" "-100" "-100" ...
 $ V7: chr  "2012-01-01 " "Observaciones " " " " " ...
chr [1:2] "N° 101 - BARRACA MAIN.xls" "N° 309 - CSA.xls"

Esta versión me anda pero tengo que tener instalado Perl:


archivos <- list.files(pattern = 'xls')

library(gdata)
informacion <- lapply(archivos, read.xls,

perl="C:\\strawberry\\perl\\bin\\perl.exe",skip=12,dec=",",header=F,as.is=T)

res <- lapply(informacion, function(x){
       cbind(x[1, 1:2], x[4:which(x == "Art. 14") - 1, 1:7])
})
out <- do.call(rbind, res)

El día 10 de enero de 2012 13:50, Jorge I Velez
<jorgeivanvelez en gmail.com> escribió: