我每个月都有不同产品的获利数据:
* Example generated by -dataex-. To install: ssc install dataex
clear
input float(id months)
1 6
1 7
1 8
1 10
1 11
1 13
1 14
1 15
1 16
1 17
2 10
2 11
2 12
2 16
2 17
2 18
2 19
2 21
2 22
2 25
end
社区贡献命令tsspell
无法返回正确的结果:
tsspell, f(L.months == .)
如何找到每种产品连续几个月的最长连胜纪录?
答案 0 :(得分:3)
首先计算该咒语,然后生成其持续时间,最后找到后者的最大值:
bysort id: generate s = sum((months - months[_n-1]) > 1)
bysort id s: generate d = _N
egen max = max(d), by(id)
list, sepby(id)
+---------------------------+
| id months s d max |
|---------------------------|
1. | 1 6 1 3 5 |
2. | 1 7 1 3 5 |
3. | 1 8 1 3 5 |
4. | 1 10 2 2 5 |
5. | 1 11 2 2 5 |
6. | 1 13 3 5 5 |
7. | 1 14 3 5 5 |
8. | 1 15 3 5 5 |
9. | 1 16 3 5 5 |
10. | 1 17 3 5 5 |
|---------------------------|
11. | 2 10 1 3 4 |
12. | 2 11 1 3 4 |
13. | 2 12 1 3 4 |
14. | 2 16 2 4 4 |
15. | 2 17 2 4 4 |
16. | 2 18 2 4 4 |
17. | 2 19 2 4 4 |
18. | 2 21 3 2 4 |
19. | 2 22 3 2 4 |
20. | 2 25 4 1 4 |
+---------------------------+
答案 1 :(得分:2)
您的问题令人困惑,因为您无法证实tsspell
不能返回正确结果的说法。但是,据我所知,tsspell
确实按照您的数据示例的预期执行了-并且其结果与@Pearly Spencer的解决方案相匹配。
tsset id months
tsspell, f(L.months == .)
egen longest = max(_seq), by(id)
list, sepby(id _spell)
+----------------------------------------------+
| id months _spell _seq _end longest |
|----------------------------------------------|
1. | 1 6 1 1 0 5 |
2. | 1 7 1 2 0 5 |
3. | 1 8 1 3 1 5 |
|----------------------------------------------|
4. | 1 10 2 1 0 5 |
5. | 1 11 2 2 1 5 |
|----------------------------------------------|
6. | 1 13 3 1 0 5 |
7. | 1 14 3 2 0 5 |
8. | 1 15 3 3 0 5 |
9. | 1 16 3 4 0 5 |
10. | 1 17 3 5 1 5 |
|----------------------------------------------|
11. | 2 10 1 1 0 4 |
12. | 2 11 1 2 0 4 |
13. | 2 12 1 3 1 4 |
|----------------------------------------------|
14. | 2 16 2 1 0 4 |
15. | 2 17 2 2 0 4 |
16. | 2 18 2 3 0 4 |
17. | 2 19 2 4 1 4 |
|----------------------------------------------|
18. | 2 21 3 1 0 4 |
19. | 2 22 3 2 1 4 |
|----------------------------------------------|
20. | 2 25 4 1 1 4 |
+----------------------------------------------+