2014-01-27 51 views
2

我試圖創建一個虛假標識符列,並且卡住了。基於矩陣在Excel或Stata中創建僞標識符

我正在使用Excel 2010.我想根據「輔助矩陣」創建一列假標識符(1,2,3等)。輔助矩陣告訴我獨特的觀察結果以及它們重複的次數。

輔助矩陣有兩列,如下所示。 (我有實際的輔助大得多使得不可能手動創建。)

C1-- C2

3 - 4

2 - 6

4 - 2

輔助矩陣的第一行告訴我前12個觀測值(3 * 4)有4個唯一標識符,每個唯一觀測值在下一個唯一標識符前重複3次。

第二行告訴我接下來的12個觀測值(2 * 6)有6個唯一標識符,每個觀測值在下一個標識符前重複2次。

根據所給出的最終輸出應是像

1 
1 
1 
2 
2 
2 
3 
3 
3 
. 
. 
. 
11 
11 
11 
11 
12 
12 
12 
12 

一列中的輔助這意味着,給定的輔助矩陣我的最終輸出列應具有12個獨特的標識符(4 + 6 + 2)和一個總32行(3 * 4 + 2 * 6 + 4 * 2)。

我也有權訪問Stata,所以如果任何人有任何想法如何在Stata中實現這一點,這將是偉大的。

回答

3

考慮到字典和風格指南的普遍建議,「獨特」意味着只發生一次,我建議術語「獨特」而不是「獨特」。

這裏是塔塔的解決方案:

. clear 

. input c1 c2 

       c1   c2 
1. 3 4 
2. 2 6 
3. 4 2 
4. end 

. gen long seq = _n 

. expand c1 * c2 
(29 observations created) 

. bysort seq : gen work = ceil(_n/c1) 

. gen id = sum(work != work[_n-1]) 

. drop work 

. list 

    +--------------------+ 
    | c1 c2 seq id | 
    |--------------------| 
1. | 3 4  1 1 | 
2. | 3 4  1 1 | 
3. | 3 4  1 1 | 
4. | 3 4  1 2 | 
5. | 3 4  1 2 | 
    |--------------------| 
6. | 3 4  1 2 | 
7. | 3 4  1 3 | 
8. | 3 4  1 3 | 
9. | 3 4  1 3 | 
10. | 3 4  1 4 | 
    |--------------------| 
11. | 3 4  1 4 | 
12. | 3 4  1 4 | 
13. | 2 6  2 5 | 
14. | 2 6  2 5 | 
15. | 2 6  2 6 | 
    |--------------------| 
16. | 2 6  2 6 | 
17. | 2 6  2 7 | 
18. | 2 6  2 7 | 
19. | 2 6  2 8 | 
20. | 2 6  2 8 | 
    |--------------------| 
21. | 2 6  2 9 | 
22. | 2 6  2 9 | 
23. | 2 6  2 10 | 
24. | 2 6  2 10 | 
25. | 4 2  3 11 | 
    |--------------------| 
26. | 4 2  3 11 | 
27. | 4 2  3 11 | 
28. | 4 2  3 11 | 
29. | 4 2  3 12 | 
30. | 4 2  3 12 | 
    |--------------------| 
31. | 4 2  3 12 | 
32. | 4 2  3 12 | 
    +--------------------+