下次别再截图了,别人没时间手动给你录入数据做实验。
- clear
- input id a str10(b) c
- 1 2010 "A01" 1
- 2 2010 "A01" 1.9873
- 4 2010 "A04" 0
- 5 2010 "A04" 20
- 6 2010 "A04" 2
- 7 2010 "B11" 0
- 8 2010 "C13" 0.0001
- 9 2010 "C13" 0
- 10 2010 "C13" 0.0001
- 11 2010 "C13" 0.0001
- 12 2010 "C13" 0
- 13 2010 "C13" 0.0002
- 14 2010 "C13" 0
- end
- gen number=.
- bys a b:gen m=_N
- egen n=max(m)
- sum n
- forval i=1/ `r(max)' {
- bys a b:egen d`i'=total(c>c[`i'])
- bys a b:replace number=d`i'[`i'] if _n==`i'
- }
- drop d* m n
- list
- +-----------------------------------+
- | id a b c number |
- |-----------------------------------|
- 1. | 1 2010 A01 1 1 |
- 2. | 2 2010 A01 1.9873 0 |
- 3. | 4 2010 A04 0 2 |
- 4. | 5 2010 A04 20 0 |
- 5. | 6 2010 A04 2 1 |
- |-----------------------------------|
- 6. | 7 2010 B11 0 0 |
- 7. | 8 2010 C13 .0001 1 |
- 8. | 9 2010 C13 0 4 |
- 9. | 10 2010 C13 .0001 1 |
- 10. | 11 2010 C13 .0001 1 |
- |-----------------------------------|
- 11. | 12 2010 C13 0 4 |
- 12. | 13 2010 C13 .0002 0 |
- 13. | 14 2010 C13 0 4 |
- +-----------------------------------+
复制代码