基于矩阵在Excel或Stata中创建伪标识符

时间:2014-01-27 13:08:48

标签: excel excel-vba matrix stata vba

我正在尝试创建一个虚假标识符列,但我被卡住了。

我正在使用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中实现这一点,那就太棒了。

1 个答案:

答案 0 :(得分:3)

我推荐术语“不同”而不是“独特”,鉴于词典和风格指南的主流建议,“独特”意味着恰好出现一次。

这是Stata解决方案:

. 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 |
    +--------------------+