데이터 예제 없음, 코드 시도 없음. 그러나 그 질문은 분명합니다.
webuse grunfeld, clear
bysort year (invest) : gen largest4 = cond(_n < _N - 3, ., invest)
sort year invest
list year largest4 if largest4 < . in 1/40, sepby(year)
+-----------------+
| year largest4 |
|-----------------|
7. | 1935 39.68 |
8. | 1935 40.29 |
9. | 1935 209.9 |
10. | 1935 317.6 |
|-----------------|
17. | 1936 50.73 |
18. | 1936 72.76 |
19. | 1936 355.3 |
20. | 1936 391.8 |
|-----------------|
27. | 1937 74.24 |
28. | 1937 77.2 |
29. | 1937 410.6 |
30. | 1937 469.9 |
|-----------------|
37. | 1938 51.6 |
38. | 1938 53.51 |
39. | 1938 257.7 |
40. | 1938 262.3 |
+-----------------+
당신이 값을 누락했다면, 그들은 각 블록의 끝을 엉망으로 결과를 정렬 할 것 :
이것이 고려하십시오. 그래서 당신은 트릭 더 필요
실행할 수있는이 예와
gen OK = !missing(invest)
bysort OK year (invest) : gen Largest4 = cond(_n < _N - 3, ., invest) if OK
sort year invest
list year Largest4 if Largest4 < . in 1/40, sepby(year)
,이 누락 된 값없는 결과가 동일합니다.
아무 것도 먹었습니까? –
고마워요. Nick 당연히이 문제는 상위 4 개 회사가 매년 바뀌지 않는 경우에만 적용됩니다. –