對不起,標題混淆。希望下面清楚。Stata - 根據變量中的值分配不同的變量
我正在使用Stata,我想將值1賦予一個取決於不同變量內的值的變量。我有20個命令變量和20個相應的變量。例如,如果order1 = 3,我想分配變量3 = 1.下面是最終數據集的樣子,如果我只有3個變量的話。
現在我有兩個迴路這樣做,但我必須解決這個另一個循環,通過這個9次進入加我已經這樣做了幾百個數據文件。我想讓它更有效率。
forvalues i = 1/20 {
forvalues j = 1/20 {
replace variable`j' = 1 if order`i'==`j'
}
}
是否有可能使用order'i」的值直接分配變量[order`i'VALUE]?然後我可以擺脫上面的j循環。像這樣的東西。
forvalues i = 1/20 {
replace variable[`order`i'value] = 1
}
感謝您的幫助!
***** CLARIFICATION ADD Feb Feb。** 我簡化了我的問題,並且數據集太多了,但解決方案建議爲我提供的工作提供了工作,但沒有得到我真正想要做的。儘管謝謝你的解決方案。我的帖子中我還不夠清楚。
爲了說明問題,我的數據沒有每個訂單的一一對應關係#分配變量#a 1(如果它沒有丟失)。例如,對於order1 = 3的第一個觀察,變量1不應該得到1,變量3應該得到1.我沒有在我的原始文章中包含的是,我實際上檢查其他條件來設置它等於1.
欲瞭解更多背景,我計算出生在不同年齡的母親的出生次序(第一個孩子,第二個孩子等)的婦女出生。所以在數據中,每一行都是女人,每個訂單#都是出生人數(order1 = 3,這是她的第三個孩子)。相應的變量#s是計數(變量#意味着女人有一個孩子的出生順序#)。我在帖子中提到,我這樣做了9次,我正在做5年齡組(15-19; 20-24等)。因此,當女性年齡在15-19歲時,第一組變量#將按順序排列;第二組變量#將是婦女20-24歲時的順序的出生次數。在此之後,我以不同的方式(按女性的教育,地理等)對這些數字進行了總結。
所以與其他迴路我做的是更多的東西像這樣
forvalues k = 1/9{
forvalues i = 1/20 {
forvalues j = 1/20 {
replace variable`k'_`j' = 1 if order`i'==`j' & age`i'==`k' & birth_age`i'<36
}
}
}
不知道這是可能的,但我想簡化,所以我只能通過每個孩子一次需要週期,而無需通過循環出生命令並直接使用該值#以將正確的變量賦值1。因此,如果order1 = 3,並且該女人有特定年齡組的孩子,則分配變量[agegroup] [3] = 1;如果order1 = 2,則變量[agegroup] [2]應該得到1.
forvalues k=1/9{
forvalues i = 1/20 {
replace variable`k'_[`order`i'value] = 1 if age`i'==`k' & birth_age`i'<36
}
}
你只想要標記(與1的)非缺失觀察? –
我想用1或0來標記所有的觀察值。所有缺少的順序#變量都會得到一個0(我已經將變量的初始值設置爲0,代碼未顯示在此處)。 – Michelle
感謝您分享您的解決方案!我終於有機會密切關注這些帖子,並且過分簡化了我的問題。我已將編輯添加到我的原始帖子中以進行澄清。 – Michelle