我试图创建一列假标识符,但我被困住了。
我正在使用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实现这一点,那就太好了。
发布于 2014-01-27 17:02:45
考虑到词典和风格指南中的流行建议,“独特”意味着精确地出现一次,我推荐术语“不同的”而不是“独特的”。
以下是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 |
+--------------------+https://stackoverflow.com/questions/21381769
复制相似问题