2011-09-07 37 views
8

Là người dùng R, tôi đang học Stata bây giờ sử dụng tài nguyên this và tôi đang bối rối về lệnh merge.kết hợp so sánh lệnh giữa R và Stata

Trong R, tôi không phải lo lắng về việc hợp nhất dữ liệu sai, bởi vì nó vẫn hợp nhất mọi thứ. Tôi không cần phải lo lắng liệu các cột chung có chứa bất kỳ bản sao nào không, vì khung dữ liệu Y sẽ hợp nhất với mỗi hàng được sao chép trong khung dữ liệu X. (sử dụng all=FALSE trong merge)

Nhưng đối với Stata, tôi cần phải xóa các hàng trùng lặp từ X trước khi tiếp tục hợp nhất.

Có được giả định trong Stata rằng, để merge tiếp tục, cột chung trong bảng chính phải là duy nhất không?

+0

để hợp nhất các vấn đề trong Stata tôi tìm thấy [MMERGE] (http://econpapers.repec.org/software/bocbocode/s420201.htm) thực sự hữu ích. – radek

+2

FYI: Bắt đầu với Stata 11, các tính năng của 'mmerge' đã được kết hợp trong lệnh" merge "chính thức. –

Trả lời

6

Câu trả lời cho câu hỏi của bạn là Không. Tôi sẽ cố gắng giải thích tại sao.

Liên kết bạn đề cập chỉ bao gồm một loại hợp nhất có thể với Stata, cụ thể là hợp nhất một-nhiều.

merge 1:m varlist using filename

Các loại hợp nhất có thể xảy ra:

One-to-one merge trên các biến quan trọng quy định

merge 1:1 varlist using filename

Nhiều-to-one merge trên các biến quan trọng quy định

merge m:1 varlist using filename

Nhiều-nhiều hợp nhất trên các biến quan trọng quy định

merge m:m varlist using filename

One-to-one merge bằng cách quan sát

merge 1:1 _n using filename

chi tiết, giải thích và ví dụ có thể được tìm thấy trong help merge.

Nếu bạn không biết nếu quan sát là duy nhất trong một tập dữ liệu, bạn có thể làm việc kiểm tra sau:

bysort idvar: gen N = _N

ta N

Nếu bạn tìm thấy giá trị của N được lớn hơn 1, bạn biết rằng quan sát không phải là duy nhất đối với idvar.

Đây thực tế là cú pháp mới của lệnh merge đã được giới thiệu với Stata 11. Trước khi Stata 11, lệnh hợp nhất đơn giản hơn một chút. Bạn chỉ cần có để sắp xếp dữ liệu của bạn, và sau đó bạn có thể làm:

merge varlist using filename

Bằng cách này, bạn vẫn có thể sử dụng cú pháp cũ này trong Stata 11 hoặc cao hơn.

+2

Công việc tốt với câu trả lời khá toàn diện. Lưu ý rằng cú pháp cũ hơn đơn giản hơn nhưng chúng đã thay đổi vì nó gây ra tất cả các loại khó phát hiện khi dữ liệu của bạn không như mong đợi. Sử dụng cú pháp cũ vẫn hoạt động nhưng trả về một cảnh báo. –

+0

@ gsk3: Bình luận hay. Cá nhân, nó đã cho tôi một thời gian để áp dụng cú pháp hợp nhất mới trong các chương trình và lớp học của tôi. Cú pháp mới trông và cảm thấy ngay từ cái nhìn đầu tiên phức tạp hơn. Tuy nhiên, nó sẽ trả hết nhanh vì nó có thể khiến bạn chú ý đến các vấn đề trong dữ liệu. –

+2

Đó là một tín dụng cho Stata rằng họ đã làm một cái gì đó để làm cho ngôn ngữ của họ khó hiểu hơn lúc đầu nhưng tốt hơn về lâu dài. Đặc biệt vì hầu hết khách hàng của họ không đến từ nền tảng lập trình và do đó không thể ngay lập tức nhận được bao nhiêu thứ như thế này (có lẽ hầu hết giống như gõ mạnh) cải thiện cuộc sống của họ :-) –

0

joinby, unmatched (cả hai) là lệnh tương ứng với kết hợp lệnh R.

Trong hợp nhất cụ thể m: m KHÔNG làm nhiều từ nhiều đến nhiều kết hợp (nghĩa là tham gia đầy đủ) trái với những gì tài liệu ngụ ý.

Các vấn đề liên quan