我正在尝试创建一个虚假标识符列,但我被卡住了。
我正在使用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中实现这一点,那就太棒了。
答案 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 |
+--------------------+