2011-09-07 21 views
8

Siendo un usuario R, estoy aprendiendo Stata ahora utilizando el recurso this, y estoy desconcertado sobre el merge comando.fusión comando de comparación entre R y Stata

En R, no tengo que preocuparme por combinar datos erróneamente, porque de todos modos fusiona todo. No necesito preocuparme si las columnas comunes contienen algún duplicado, porque el marco de datos Y se fusionará con cada fila duplicada en el marco de datos X. (Usando all=FALSE en merge)

Pero para Stata, tengo que quitar las filas duplicadas de X antes de proceder a fusionar.

¿Se supone en Stata que, para que proceda merge, la columna común en la tabla maestra debe ser única?

+0

para fusionar problemas en Stata Encuentro [MMERGE] (http://econpapers.repec.org/software/bocbocode/s420201.htm) realmente útil. – radek

+2

FYI: Comenzando con Stata 11, las características de 'mmerge' se han incorporado en el comando 'oficial'' merge'. –

Respuesta

6

La respuesta a su pregunta es No. Trataré de explicar por qué.

El enlace que menciona cubre solo un tipo de fusión que es posible con Stata, es decir, la fusión de uno a muchos. son posibles

merge 1:m varlist using filename

Otros tipos de fusión:

uno-a-uno combinación de variables clave especificadas

merge 1:1 varlist using filename

muchos-a-uno combinación de variables clave especificadas

merge m:1 varlist using filename

muchos-a-muchos de combinación de variables clave especificadas

merge m:m varlist using filename

uno-a-uno combinación por la observación

merge 1:1 _n using filename

detalles, explicaciones y ejemplos se pueden encontrar en help merge.

Si usted no sabe si las observaciones son únicas en un conjunto de datos, puede hacer lo siguiente comprobación:

bysort idvar: gen N = _N

ta N

Si encuentras valores de N que son mayores que 1, usted sabe que las observaciones no son únicas con respecto a idvar.

Esta es, de hecho, la nueva sintaxis del comando merge que se ha introducido con Stata 11. Antes de Stata 11, el comando de combinación era un poco más simple. Simplemente había que ordenar los datos, y entonces se podría hacer:

merge varlist using filename

Por cierto, todavía se puede utilizar esta sintaxis de edad en Stata 11 o superior.

+2

Buen trabajo con una respuesta bastante completa. Tenga en cuenta que la sintaxis anterior era más simple, pero la cambiaron porque causaba todo tipo de problemas difíciles de detectar cuando sus datos no eran los esperados. El uso de la sintaxis anterior sigue funcionando pero devuelve una advertencia. –

+0

@ gsk3: Buen comentario. Personalmente, me llevó algo de tiempo adoptar la nueva sintaxis de fusión en mis programas y notas de clase. La nueva sintaxis se ve y se siente a primera vista más complicada. Sin embargo, dará sus frutos rápidamente, ya que puede llamar su atención sobre los problemas en los datos. –

+2

Es un crédito para Stata que hicieron algo para hacer que su idioma fuera más difícil de entender al principio, pero mejor a largo plazo. Particularmente dado que la mayoría de sus clientes no provienen de fondos de programación y, por lo tanto, es improbable que obtengan de inmediato la cantidad de cosas como esta (quizás más parecida a la tipificación fuerte) :-) –

0

joinby, incomparable (ambos) es el comando que corresponde a la combinación de comandos R.

En particular merge m: m NO hace una fusión de muchos a muchos (es decir, unión completa) al contrario de lo que implica la documentación.