2011-07-19 284 views
3

我在工作中遇到了一個問題:我合併了兩個數據集,並且有許多變量具有相同的內容,但是其中有一個變量值爲數據集1在數據集2中有一個缺失值。所以我需要將這個變量的值傳遞給另一個變量。在Stata中將數值從一個變量傳遞到另一個變量

這是迄今爲止我最好的拍攝:

replace V23=1 if V232==1 
replace V23=2 if V232==2 
replace V23=3 if V232==3 
replace V23=4 if V232==4 
replace V23=8 if V232==8 
replace V23=.u if V232==10 | V232==9 

然而,這是一個繁瑣的任務做就是40個+變量 - 和,因爲他們中的一些數值變量,它變成了一個永遠做不完的任務。

回答

2

這裏是一個開始:

foreach v of varlist v23 { 
    local w `v'2 
    replace `v' = `w' if missing(`v') 
    replace `v' = .u if `w' == 10 | `w' == 9 
} 

注意此解決方案依賴於變量名中的詞彙關係:它假定舊變量「V23」與新變量「v232」相關聯。您可以列出這些關聯並使用它們,但這很不方便。如果需要,重命名這些變量可能更容易,以符合這種約定,然後運行替換腳本,然後恢復所需的名稱。

如果您不熟悉這種自動化,請閱讀幫助頁面macroforeach

+0

你先生,太棒了!我仍然錯過了一些理解,以充分理解這一點。它適用於一個變量,但以下兩個(一個數字,一個類似於第一個工作的類別)並沒有那麼好。我不明白的是: 1)什麼是詞彙關係?它最常用於語義學,我不能將這些知識轉化爲編程。 2)我根本不瞭解當地的w'v'2線。我認爲這與我不知道如何將所需的變量與值「w」(在上述情況下爲V232)綁定到變量V23中,值爲v。 – emilBeBri

+0

@Emil w通過連接v之後的字符「2」。例如,當v是「xyz」時,則w將是「xyz2」。 – whuber

+0

來到這裏告訴你,我剛纔明白了我自己!只花了3小時=)。我現在明白了,謝謝! – emilBeBri

相關問題