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.
[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
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120110/3a06b9f8/attachment.pl>
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 <>
Estimados: Tengo un directorio con varios archivos Excel quiero importarlos todos y grabarlos en un único archivo .dbf. [...]
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 <>
Estimados: Tengo un directorio con varios archivos Excel quiero importarlos todos y grabarlos en un único archivo .dbf. [...]
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:
str(a1)
'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 " " " " " ...
str(a2)
'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 " " " " " ...
str(archivos)
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ó:
Hola Sebastian,
No tengo Windows a la mano, pero podrias intentar con RODBC (que no usa
Perl):
# para leer archivos de Excel usando RODBC
require(RODBC) Â # instalar primero
FromExcel <- function(yourfile, worksheet){
channel <- odbcConnectExcel(yourfile)
mydata <- sqlFetch(channel, worksheet)
odbcClose(channel)
mydata
}
archivos <- list.files(pattern = 'xls')
info <- lapply(archivos, FromExcel, worksheet = 1) Â # asumiendo que la
primera hoja tiene la info
res <- lapply(info, function(x){
y <- x[-c(1:12),] Â # este es el "skip" que haces
cbind(y[1, 1:2], y[4:which(y == "Art. 14") - 1, 1:7]) Â # el resto
})
out <- do.call(rbind, res)
out
Si no funciona, podrias por favor enviarnos el resultado de str(a1) y
str(archivos), asi como el comando lapply(...) que usaste?
Un saludo,
Jorge.-
2012/1/10 Sebastian Kruk <>
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.
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es