作爲一名R用戶,我正在使用this資源學習Stata,並且對merge
命令感到困惑。R和Stata合併命令比較
在R中,我不必擔心錯誤地合併數據,因爲無論如何它會合並所有內容。如果公共列包含任何重複項,我不必擔心,因爲Y
數據幀將合併到X
數據幀中的每個重複行。 (在merge
中使用all=FALSE
)
但是對於Stata,我需要在繼續合併之前從X
中刪除重複的行。
是否在Stata中假定,爲了繼續merge
,主表中的公共列必須是唯一的?
作爲一名R用戶,我正在使用this資源學習Stata,並且對merge
命令感到困惑。R和Stata合併命令比較
在R中,我不必擔心錯誤地合併數據,因爲無論如何它會合並所有內容。如果公共列包含任何重複項,我不必擔心,因爲Y
數據幀將合併到X
數據幀中的每個重複行。 (在merge
中使用all=FALSE
)
但是對於Stata,我需要在繼續合併之前從X
中刪除重複的行。
是否在Stata中假定,爲了繼續merge
,主表中的公共列必須是唯一的?
您的問題的答案是否定的,我會盡力解釋原因。
您提到的鏈接僅涵蓋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
找到。
如果你不知道,如果觀測數據集中的唯一,你可以做以下檢查:
bysort idvar: gen N = _N
ta N
如果發現是大於1的N值,你知道觀察對於idvar來說並不是唯一的。
這實際上是Stata 11引入的merge
命令的新語法。在Stata 11之前,merge命令更簡單一些。你根本就對數據進行排序,然後你可以做:
merge varlist using filename
順便說一句,你仍然可以使用這個舊的語法在Stata 11或更高版本。
一個相當全面的答案的好工作。請注意,較早的語法比較簡單,但是它們對它進行了更改,因爲當數據不符合預期時,它會導致各種難以檢測到的問題。使用舊的語法仍然有效,但會返回警告。 –
@ gsk3:好評。就我個人而言,我花了一些時間在我的程序和主題註釋中採用新的合併語法。新語法的外觀和感覺乍一看更加複雜。但是,它會很快得到回報,因爲它可能會提請您注意數據中的問題。 – 2011-09-07 10:53:37
Stata認爲他們做了一些事情讓他們的語言一開始就變得難以理解,但從長遠來看更好。特別是因爲他們的大多數客戶不是來自編程背景,因此不太可能立即得到這種類似的東西(可能類似於強打字)改善他們的生活:-) –
joinby,無與倫比(兩者)是對應於R命令合併命令。
在特定合併L:M沒有做一個多對多的合併(即完全連接)違背了文件意味着什麼。
在Stata的合併問題,我找到[MMERGE(http://econpapers.repec.org/software/bocbocode/s420201.htm)真的很有用。 – radek
僅供參考:從Stata 11開始,「mmerge」的功能已被納入「官方」merge合併命令中。 – 2011-09-08 08:12:12