2016-09-14 64 views
0

我正在使用Stata,並且我有一組變量,分別命名爲cal1,cal2,cal3依此類推,直到cal21。對於我的數據集的每一行,我可以有或多或少cal*變量作爲非丟失(我設計了一個reshape wide數據集)。我想要生成一個新變量,該變量返回每個非缺失行可用的變量cal*的最大名稱。例如,如果第1行直到cal3爲不丟失,則此變量返回cal3;對於行2如果我有cal1,cal2cal6,我想cal6。有沒有辦法做到這一點?利用Stata中變量的名稱

+0

在Stata中不這樣做 –

+3

最直接的方法是在重塑之前計算它。然後,不要重新塑形,因爲有經驗的Stata用戶普遍認爲,除少數例外情況外,Stata使用更長的佈局來完成複雜的分析,甚至是簡單的任務,比如嘗試的簡單任務而不是相同數據的廣泛佈局。 – 2016-09-15 02:11:34

+2

@Noobie如果你給出了一個理由,那麼這個評論可能會有幫助或有趣。 –

回答

1

這將是更容易使用數據來完成長格式佈局,但它是可行的具有廣泛的數據也有一個循環:

gen max_cal = "none" 
forvalues v=1/21 { 
    replace max_cal = "cal`v'" if !missing(cal`v') 
} 

這將有一個更高的max_cal變量每次更新一個不失蹤。

+0

「格式」在Stata中過載(顯然不是你的錯!)。經驗豐富的Stata用戶會立即認識到您在談論的內容,但我喜歡Clyde Schechter提到的長佈局和寬佈局的例子。 –

+0

只需注意,如果變量名稱不規則,我們只會使用'foreach'。 –

+0

@NickCox一個很好的觀點。我認爲這樣的單詞列表會成爲一個很好的FAQ。 –