2011-09-07 6 views
8

R 사용자이므로 this 리소스를 사용하여 Stata를 배우고 있으며 merge 명령에 대해 의아해합니다.R과 Stata의 병합 명령 비교

R에서는 데이터를 병합하는 것에 대해 걱정할 필요가 없습니다. 어쨌든 모든 것을 병합하기 때문입니다. Y 데이터 프레임이 X 데이터 프레임의 복제 된 행 각각에 병합되기 때문에 공통 열에 중복 된 데이터가 포함되어 있어도 걱정할 필요가 없습니다. (all=FALSEmerge에서 사용)

그러나 Stata의 경우 병합을 진행하기 전에 X에서 중복 행을 제거해야합니다.

merge을 진행하려면 Stata에서 마스터 테이블의 공통 열이 고유해야한다고 가정합니까?

+0

Stata의 통합 문제에 대한 [MMERGE] (http://econpapers.repec.org/software/bocbocode/s420201.htm)가 정말 유용하다고 생각합니다. – radek

+2

FYI : Stata 11부터 'mmerge'의 기능이 "공식적인"merge 명령에 통합되었습니다. –

답변

6

귀하의 질문에 대한 대답은 아니오입니다. 이유를 설명하려고합니다.

언급 한 링크는 Stata에서 가능한 한 가지 유형의 병합, 즉 일대 다 병합에만 적용됩니다. 병합의

merge 1:m varlist using filename

다른 유형이 가능합니다 :

일대일 지정된 주요 변수

에 병합

merge 1:1 varlist using filename

대일 지정된 키 변수에 대한 병합

merge m:1 varlist using filename

merge 1:1 _n using filename

세부 설명과 예제 관찰

에 의해 지정된 주요 변수

merge m:m varlist using filename

일대일 병합

대다 병합은 help merge에서 찾을 수 있습니다. 당신이 1보다 큰 N의 값을 찾아내는 경우에,

bysort idvar: gen N = _N

ta N

:

관측 데이터 세트에 고유 한 경우에 당신이 모르는 경우

, 당신은 다음과 같은 검사를 수행 할 수 있습니다 당신은 관측치가 idvar와 관련하여 고유하지 않다는 것을 알고 있습니다.

실제로 이것은 Stata 11에서 도입 된 merge 명령의 새로운 구문입니다. Stata 11 이전에는 병합 명령이 조금 더 간단했습니다. 당신은 단순히 데이터를 정렬했고, 당신은 할 수 : 그런데

merge varlist using filename

, 당신은 여전히 ​​STATA 11 이상이 된 구문을 사용할 수 있습니다.

+2

꽤 포괄적 인 대답으로 좋은 직장. 이전 구문은 더 간단했지만 데이터가 예상과 다를 때 모든 종류의 감지하기 어려운 문제가 발생했기 때문에 변경되었습니다. 이전 구.을 사용해도 작동하지만 경고를 리턴합니다. –

+0

@ gsk3 : 좋은 의견입니다. 개인적으로 내 프로그램과 클래스 노트에 새로운 병합 구문을 채택하는 데 시간이 걸렸습니다. 새로운 구문은 한눈에 더 복잡해 보이고 느껴집니다. 그러나 데이터 문제에주의를 기울일 수 있으므로 신속하게 성과를 거둘 수 있습니다. –

+2

Stata는 처음에는 언어를 이해하기 어렵게 만들었지 만 장기적으로는 더 나은 언어를 만들어 냈습니다. 특히 고객의 대부분이 프로그래밍 배경에서 온 것이 아니기 때문에 (아마도 강력한 타이핑과 비슷한) 다음과 같은 것들을 얼마나 쉽게 얻을 수 있을지 모르기 때문에 :-) –

0

joinby, 일치하지 않는 (both)은 R 명령 병합에 해당하는 명령입니다.

특히 병합 m : m 문서에서 암시하는 것과 달리 많은 부분 병합 (즉, 전체 결합)을 수행하지 마십시오.