Hola,
Tengo un conjunto de bases de datos de una encuesta industrial para
diferentes años (1995-2014). Las bases de datos están en formato .mdb. A su
vez, cada base de datos tiene 3 tablas con una variable "ID" común (la
"llave") para vincular las tablas.
Quiero realizar análisis estadÃsticos para analizar la evolución de ciertas
variables.
Quiero armar un dataframe que contenga todas las bases de datos (1995 a
2014) y todas las tablas (tabla 1 a tabla 3).
He podido generar un dataframe que me une las 3 tablas para un año (por ej.
2014) del siguiente modo.
library(RODBC)
setwd("C:/Users/M/Documents/R data/")
base<-odbcConnectAccess("2014")
datos1<-sqlQuery(base ,"SELECT * FROM TABLA1_2014")
datos2<-sqlQuery(base ,"SELECT * FROM TABLA2_2014")
datos3<-sqlQuery(base , "SELECT * FROM TABLA3_2014")
base1<-Reduce(function(...) merge (...,by="ID", all=T),
list(datos1,datos2,datos3))
Sin embargo, no he podido realizar un bucle para hacer este mismo proceso
para el conjunto de datos.
quiero hacer una función for para automatizar el proceso.
agradecerÃa una ayuda al respecto.
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
Libre
de virus. www.avast.com
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
[R-es] help (Crear bucle para generar un dataframe a partir de datos .mdb)
3 messages · Matias Parra, Freddy López, Javier Marcuzzi
¡Hola! El jue, 15-02-2018 a las 12:43 -0300, Matias Parra escribió:
library(RODBC)
setwd("C:/Users/M/Documents/R data/")
base<-odbcConnectAccess("2014")
datos1<-sqlQuery(base ,"SELECT * FROM TABLA1_2014")
datos2<-sqlQuery(base ,"SELECT * FROM TABLA2_2014")
datos3<-sqlQuery(base , "SELECT * FROM TABLA3_2014")
base1<-Reduce(function(...) merge (...,by="ID", all=T),
list(datos1,datos2,datos3))
Utilizando la función paste() y algún bucle por aquà y por allá podrÃas
reutilizar tu mismo código.
Por ejemplo:
sqlQuery(base, paste(paste("select * from tabla", s, sep=''), "_", año,
sep=''))
variando s de 1 a 3 y año de 1995 a 2014, harÃa el trabajo de
seleccionar lo que necesitas para esas tablas y perÃodos. Luego
restarÃa que la información la acumules o guardes en una lista o donde
sea más conveniente.
Ojalá sea de ayuda.
¡Salud!
«...homines autem hominum causa esse generatos...» Cicero [[alternative HTML version deleted]]
Estimado MatÃas Parra Puedes utilizar paste como opina Freddy, para ciertas cosas yo supe realizarlo, pero R demora mucho ejecutando, lo lleva a la memoria, luego otra vez en caso de ..., y la verdad es que se optimiza llevando los datos a una base de datos, luego importar esta enterita a R. Una ventaja es por ejemplo si en R encuentra cierto valor que le llama la atención, es mucho más práctico buscarlo en la base de datos unificada, aunque se puede realizar todo en R. Javier Rubén Marcuzzi El 15 de febrero de 2018, 13:10, Freddy Omar López Quintero < freddy.vate01 en gmail.com> escribió:
¡Hola! El jue, 15-02-2018 a las 12:43 -0300, Matias Parra escribió:
library(RODBC)
setwd("C:/Users/M/Documents/R data/")
base<-odbcConnectAccess("2014")
datos1<-sqlQuery(base ,"SELECT * FROM TABLA1_2014")
datos2<-sqlQuery(base ,"SELECT * FROM TABLA2_2014")
datos3<-sqlQuery(base , "SELECT * FROM TABLA3_2014")
base1<-Reduce(function(...) merge (...,by="ID", all=T),
list(datos1,datos2,datos3))
Utilizando la función paste() y algún bucle por aquà y por allá podrÃas
reutilizar tu mismo código.
Por ejemplo:
sqlQuery(base, paste(paste("select * from tabla", s, sep=''), "_", año,
sep=''))
variando s de 1 a 3 y año de 1995 a 2014, harÃa el trabajo de
seleccionar lo que necesitas para esas tablas y perÃodos. Luego
restarÃa que la información la acumules o guardes en una lista o donde
sea más conveniente.
Ojalá sea de ayuda.
¡Salud!
--
«...homines autem hominum causa esse generatos...»
Cicero
[[alternative HTML version deleted]]
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es