lunes, 2 de noviembre de 2015

Combinando Bases de Datos (Fusión de Ficheros)

Muchas veces es necesario combinar dos o más bases de datos para formar una sola. Para ello se pueden utilizar los comandos merge o append. merge une dos bases de datos utilizando una variable en común. Las dos bases de datos deben estar en formato .dta (Stata) y las observaciones deben estar ordenas (utilizando sort) de acuerdo a la variable que sirve como referencia. El objetivo de merge es anexar variables no observaciones.

En el caso de append sucede lo contrario, lo que se busca es anexar observaciones (por lo general) a una misma serie de variables. La sintaxis es mucho más sencilla pues solo se tiene que nombrar la base de datos que se desea anexar. Por ejemplo:  append using ndatos

------------------------------------------------------------------

Comando append

El comando append combina bases de datos “verticalmente”. Se carga una base de datos a la memoria y la otra se “pega” al final de la que está en memoria. La base de datos en la memoria se llama “master” y la que se va a pegar se llama “using” o datos a usar.

Comando append con bases de datos con diferentes variables

Cuando las bases no contienen exactamente las mismas variables, el comando append pega las observaciones adecuadamente y crea valores inexistentes (missing values) para las que no están en ambas bases de datos.


Master y Using






























Combinando datos: merge

“merge” combina dos bases de datos “horizontalmente”, basándose en una variable(s) identificadora de las observaciones.
  • Varias formas de combinar dos bases de datos de esta manera: 1:1 , 1:m , m:1 y m:m (la m es de múltiple).
  • Útiles solo dos: 1:1 y m:1
  • En esta notación el primer término se refiere a la base de datos master y la segunda a using.

1:1 el identificador de la observación en ambas bases de datos es único (ej. en una base tenemos los nombres de las personas con su edad y en la otra tenemos el nombre con la estatura. Solo tenemos un nombre por persona en cada base de datos)

m:1 el identificador es único para las observaciones en la base de datos using, pero no necesariamente único en la master (ej. en una tenemos varias observaciones por persona (incluyendo región) y en la otra tenemos variables a nivel de región, PIB).
  • Cada vez que se utiliza el comando merge, en la base de datos resultante se crea una nueva variable
  • La variable creada por el comando merge se llama “_merge” y puede tomar tres códigos (números)
  • Los números nos indican si el id se encontró en una sola de las bases de datos (y si es así en cuál), o en ambas.










Para continuar entendiendo los comandos merge y append los invito a la lectura de estas presentaciones, una de ellas en ingles y otra en español. 

Se presentan ambos comandos con ejemplos practicos para entender la potencialidad de cada comando.

3 comentarios:

  1. Estimados, pregunta: tengo 10 bases de datos para fucionar de forma vertical, hay alguna manera de hacerlos como un bucle

    ResponderEliminar