在基于matrix的Excel或Stata中创build伪标识符

我试图创build一个虚假的标识列,我卡住了。

我正在使用Excel 2010.我想根据“辅助matrix”创build一列假标识符(1,2,3等)。 辅助matrix告诉我独特的观察结果以及它们重复的次数。

辅助matrix有两列,如下所示。 (我拥有的实际辅助function要大得多,不可能手动创build。)

C1– C2

3 – 4

2 – 6

4 – 2

辅助matrix的第一行告诉我前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 

这意味着给定辅助matrix,我的最终输出列应该有12个唯一标识符(4 + 6 + 2)和总共32行(3 * 4 + 2 * 6 + 4 * 2)。

我也可以访问Stata,所以如果有人有任何想法如何在Stata中实现这一点,这将是伟大的。

鉴于字典和风格指南的普遍build议,我推荐术语“独特”而不是“独特”,即“独特”意味着只发生一次。

这是一个Stata解决scheme:

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