group1 group2 info
100 1 .
100 1 .
200 1 10
200 2 20
300 2 .
然後,對於1組,1組複製的「信息」到其他group1s如果第2組是相同的。
那麼結果會是這樣。
group1 group2 info
100 1 10
100 1 10
200 1 10
200 2 20
300 2 20
我試圖做到這一點使用bysort,但不能想辦法做到這一點..
group1 group2 info
100 1 .
100 1 .
200 1 10
200 2 20
300 2 .
然後,對於1組,1組複製的「信息」到其他group1s如果第2組是相同的。
那麼結果會是這樣。
group1 group2 info
100 1 10
100 1 10
200 1 10
200 2 20
300 2 20
我試圖做到這一點使用bysort,但不能想辦法做到這一點..
這會工作
bysort group2 (info): replace info = info[1]
發現這裏的解決方案: http://www.stata.com/statalist/archive/2006-10/msg00928.html
這個問題令人費解,因爲這個例子意味着變量group1
是無關緊要的。我會舉個例子,而不是措辭作爲權威。
通過@timat的解決方案是沿着正確的線路,但不執行任何操作,以檢查明智約束使組中的非缺失值應該是相同的。
一種方法取決於一個事實,即最egen
函數忽略儘可能缺失值。因此,當且僅當每組中的最大值和最小值相同(並且不丟失)並且可以複製以代替觀察組內的缺失值時,只有一個不同的非缺失值。 (如果所有的值丟失,沒有任何問題的發生。)
clear
input group1 group2 info
100 1 .
100 1 .
200 1 10
200 2 20
300 2 .
end
bysort group2: egen max = max(info)
by group2: egen min = min(info)
replace info = max if max == min & missing(info)
list, sepby(group2)
+------------------------------------+
| group1 group2 info max min |
|------------------------------------|
1. | 100 1 10 10 10 |
2. | 100 1 10 10 10 |
3. | 200 1 10 10 10 |
|------------------------------------|
4. | 200 2 20 20 20 |
5. | 300 2 20 20 20 |
+------------------------------------+