Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Counting subgroups of values = x in a panel dataset

    Hi everyone, I have a very stupid problem that I cannot sort out.
    I have a panel dataset with a variable id for every respondent, and a time variable called "wave", and I created a variable that is called "dist_next_jump" (which I think the definition is not relevant). The only thing that I want to do is to create a variable that takes value N where N is the number of zero values in a group of zeroes that is not interrupted by another number, for each id, and decreases up to 1. I make you an example.

    id dist_next_jump my_var
    1 4 .
    1 0 3
    1 0 2
    1 0 1
    1 2 .
    1 0 2
    1 0 1
    2 0 4
    2 0 3
    2 0 2
    2 0 1
    2 3 .
    2 3 .

    I tried with the following command but it has a problem, it doesn't interrupt the counting when it finds a value that is not 0. If an id has 7 zeroes with an interruption at the fourth one, instead of creating 4 3 2 1 . 3 2 1 it makes 7 6 5 4 . 3 2 1.
    Code:
    gen counter = .
    bysort id (wave) : replace counter = cond(dist_next_jump == 0, _N - _n, .)
    DO you have any idea on how to do that? Thank you very much, I'm leaving here an example of the dataset that I have.

    Code:
    * Example generated by -dataex-. For more info, type help dataex
    clear
    input str10 id float(wave dist_next_jump)
    "p_10000620" 31 12
    "p_10000620" 43  2
    "p_10000620" 45  0
    "p_10000620" 46  0
    "p_10000620" 47  0
    "p_10000620" 48  4
    "p_10000620" 52  0
    "p_10000620" 53  0
    "p_10000620" 54  0
    "p_10000620" 55  0
    "p_10000620" 56  0
    "p_10000620" 57  0
    "p_10000701" 24  .
    "p_10000701" 25  .
    "p_10000701" 26  .
    "p_10000701" 27  .
    "p_10000701" 28  .
    "p_10000701" 29  .
    "p_10000701" 30  .
    "p_10000701" 31  .
    "p_10000701" 32  .
    "p_10000701" 33  .
    "p_10000701" 34  .
    "p_10000701" 35  .
    "p_10000701" 36  .
    "p_10000701" 37  .
    "p_10000701" 38  .
    "p_10000701" 39  .
    "p_10000701" 40  .
    "p_10000701" 41  .
    "p_10000701" 42  .
    "p_10000701" 43  .
    "p_10000701" 44  .
    "p_10000701" 45  .
    "p_10000701" 46  .
    "p_10000701" 47  .
    "p_10001328"  4  .
    "p_10001328"  5  .
    "p_10001328"  6  .
    "p_10001328"  7  .
    "p_10001328"  8  .
    "p_10001328"  9  .
    "p_10001328" 10  .
    "p_10001328" 11  .
    "p_10001328" 12  .
    "p_10001328" 13  .
    "p_10001328" 14  .
    "p_10001328" 15  .
    "p_10001328" 16  .
    "p_10001328" 17  .
    "p_10001328" 18  .
    "p_10001328" 19  .
    "p_10001328" 20  .
    "p_10001328" 21  .
    "p_10001328" 22  .
    "p_10001328" 23  .
    "p_10001328" 24  .
    "p_10001328" 25  .
    "p_10001328" 26  .
    "p_10001328" 27  .
    "p_10001328" 28  .
    "p_10001328" 29  .
    "p_10001328" 30  .
    "p_10001328" 31  .
    "p_10001328" 32  .
    "p_10001600" 38  .
    "p_10003492" 53  3
    "p_10003492" 56  0
    "p_10003859" 16  .
    "p_10004859" 24  .
    "p_10004859" 25  .
    "p_10004859" 26  .
    "p_10004859" 27  .
    "p_10004859" 28  .
    "p_10004859" 29  .
    "p_10004859" 30  .
    "p_10004859" 31  .
    "p_10004859" 32  .
    "p_10004859" 33  .
    "p_10004859" 34  .
    "p_10004859" 35  .
    "p_10004859" 36  .
    "p_10004859" 37  .
    "p_10004859" 38  .
    "p_10004859" 39  .
    "p_10004859" 40  .
    "p_10004859" 41  .
    "p_10004859" 42  .
    "p_10004859" 43  .
    "p_10004859" 44  .
    "p_10004859" 45  .
    "p_10004859" 46  .
    "p_10004859" 47  .
    "p_10006340" 41  .
    "p_10006340" 42  .
    "p_10006340" 43  .
    "p_10006340" 44  .
    "p_10006340" 45  .
    "p_10006340" 46  .
    "p_10006340" 47  .
    end

  • #2
    Generic tip: Problems in counting down are often easier if you reverse time temporarily. Usually that just calls for negating a time variable and changing the sort order for a while.

    I think you may have, or may need, more rules than you state, but this may help.


    Code:
    * Example generated by -dataex-. For more info, type help dataex
    clear
    input str10 id float(wave dist_next_jump)
    "p_10000620" 31 12
    "p_10000620" 43  2
    "p_10000620" 45  0
    "p_10000620" 46  0
    "p_10000620" 47  0
    "p_10000620" 48  4
    "p_10000620" 52  0
    "p_10000620" 53  0
    "p_10000620" 54  0
    "p_10000620" 55  0
    "p_10000620" 56  0
    "p_10000620" 57  0
    "p_10000701" 24  .
    "p_10000701" 25  .
    "p_10000701" 26  .
    "p_10000701" 27  .
    "p_10000701" 28  .
    "p_10000701" 29  .
    "p_10000701" 30  .
    "p_10000701" 31  .
    "p_10000701" 32  .
    "p_10000701" 33  .
    "p_10000701" 34  .
    "p_10000701" 35  .
    "p_10000701" 36  .
    "p_10000701" 37  .
    "p_10000701" 38  .
    "p_10000701" 39  .
    "p_10000701" 40  .
    "p_10000701" 41  .
    "p_10000701" 42  .
    "p_10000701" 43  .
    "p_10000701" 44  .
    "p_10000701" 45  .
    "p_10000701" 46  .
    "p_10000701" 47  .
    "p_10001328"  4  .
    "p_10001328"  5  .
    "p_10001328"  6  .
    "p_10001328"  7  .
    "p_10001328"  8  .
    "p_10001328"  9  .
    "p_10001328" 10  .
    "p_10001328" 11  .
    "p_10001328" 12  .
    "p_10001328" 13  .
    "p_10001328" 14  .
    "p_10001328" 15  .
    "p_10001328" 16  .
    "p_10001328" 17  .
    "p_10001328" 18  .
    "p_10001328" 19  .
    "p_10001328" 20  .
    "p_10001328" 21  .
    "p_10001328" 22  .
    "p_10001328" 23  .
    "p_10001328" 24  .
    "p_10001328" 25  .
    "p_10001328" 26  .
    "p_10001328" 27  .
    "p_10001328" 28  .
    "p_10001328" 29  .
    "p_10001328" 30  .
    "p_10001328" 31  .
    "p_10001328" 32  .
    "p_10001600" 38  .
    "p_10003492" 53  3
    "p_10003492" 56  0
    "p_10003859" 16  .
    "p_10004859" 24  .
    "p_10004859" 25  .
    "p_10004859" 26  .
    "p_10004859" 27  .
    "p_10004859" 28  .
    "p_10004859" 29  .
    "p_10004859" 30  .
    "p_10004859" 31  .
    "p_10004859" 32  .
    "p_10004859" 33  .
    "p_10004859" 34  .
    "p_10004859" 35  .
    "p_10004859" 36  .
    "p_10004859" 37  .
    "p_10004859" 38  .
    "p_10004859" 39  .
    "p_10004859" 40  .
    "p_10004859" 41  .
    "p_10004859" 42  .
    "p_10004859" 43  .
    "p_10004859" 44  .
    "p_10004859" 45  .
    "p_10004859" 46  .
    "p_10004859" 47  .
    "p_10006340" 41  .
    "p_10006340" 42  .
    "p_10006340" 43  .
    "p_10006340" 44  .
    "p_10006340" 45  .
    "p_10006340" 46  .
    "p_10006340" 47  .
    end
    
    
    
    bysort id (wave) : gen wanted1 = cond(wave[_n+1] == wave + 1, 0,  wave[_n+1] - wave)
    gen negwave = -wave 
    bysort id (negwave) : gen wanted2 = 1 if wanted1  == 0 & wanted1[_n-1] != 0 
    by id : replace wanted2 = wanted2[_n-1] + 1 if missing(wanted2) & wanted1 == 0 
    
    sort id wave 
    
    list, sepby(id) 
    
        +------------------------------------------------------------+
         |         id   wave   dist_n~p   wanted1   negwave   wanted2 |
         |------------------------------------------------------------|
      1. | p_10000620     31         12        12       -31         . |
      2. | p_10000620     43          2         2       -43         . |
      3. | p_10000620     45          0         0       -45         3 |
      4. | p_10000620     46          0         0       -46         2 |
      5. | p_10000620     47          0         0       -47         1 |
      6. | p_10000620     48          4         4       -48         . |
      7. | p_10000620     52          0         0       -52         5 |
      8. | p_10000620     53          0         0       -53         4 |
      9. | p_10000620     54          0         0       -54         3 |
     10. | p_10000620     55          0         0       -55         2 |
     11. | p_10000620     56          0         0       -56         1 |
     12. | p_10000620     57          0         .       -57         . |
         |------------------------------------------------------------|
     13. | p_10000701     24          .         0       -24        23 |
     14. | p_10000701     25          .         0       -25        22 |
     15. | p_10000701     26          .         0       -26        21 |
     16. | p_10000701     27          .         0       -27        20 |
     17. | p_10000701     28          .         0       -28        19 |
     18. | p_10000701     29          .         0       -29        18 |
     19. | p_10000701     30          .         0       -30        17 |
     20. | p_10000701     31          .         0       -31        16 |
     21. | p_10000701     32          .         0       -32        15 |
     22. | p_10000701     33          .         0       -33        14 |
     23. | p_10000701     34          .         0       -34        13 |
     24. | p_10000701     35          .         0       -35        12 |
     25. | p_10000701     36          .         0       -36        11 |
     26. | p_10000701     37          .         0       -37        10 |
     27. | p_10000701     38          .         0       -38         9 |
     28. | p_10000701     39          .         0       -39         8 |
     29. | p_10000701     40          .         0       -40         7 |
     30. | p_10000701     41          .         0       -41         6 |
     31. | p_10000701     42          .         0       -42         5 |
     32. | p_10000701     43          .         0       -43         4 |
     33. | p_10000701     44          .         0       -44         3 |
     34. | p_10000701     45          .         0       -45         2 |
     35. | p_10000701     46          .         0       -46         1 |
     36. | p_10000701     47          .         .       -47         . |
         |------------------------------------------------------------|
     37. | p_10001328      4          .         0        -4        28 |
     38. | p_10001328      5          .         0        -5        27 |
     39. | p_10001328      6          .         0        -6        26 |
     40. | p_10001328      7          .         0        -7        25 |
     41. | p_10001328      8          .         0        -8        24 |
     42. | p_10001328      9          .         0        -9        23 |
     43. | p_10001328     10          .         0       -10        22 |
     44. | p_10001328     11          .         0       -11        21 |
     45. | p_10001328     12          .         0       -12        20 |
     46. | p_10001328     13          .         0       -13        19 |
     47. | p_10001328     14          .         0       -14        18 |
     48. | p_10001328     15          .         0       -15        17 |
     49. | p_10001328     16          .         0       -16        16 |
     50. | p_10001328     17          .         0       -17        15 |
     51. | p_10001328     18          .         0       -18        14 |
     52. | p_10001328     19          .         0       -19        13 |
     53. | p_10001328     20          .         0       -20        12 |
     54. | p_10001328     21          .         0       -21        11 |
     55. | p_10001328     22          .         0       -22        10 |
     56. | p_10001328     23          .         0       -23         9 |
     57. | p_10001328     24          .         0       -24         8 |
     58. | p_10001328     25          .         0       -25         7 |
     59. | p_10001328     26          .         0       -26         6 |
     60. | p_10001328     27          .         0       -27         5 |
     61. | p_10001328     28          .         0       -28         4 |
     62. | p_10001328     29          .         0       -29         3 |
     63. | p_10001328     30          .         0       -30         2 |
     64. | p_10001328     31          .         0       -31         1 |
     65. | p_10001328     32          .         .       -32         . |
         |------------------------------------------------------------|
     66. | p_10001600     38          .         .       -38         . |
         |------------------------------------------------------------|
     67. | p_10003492     53          3         3       -53         . |
     68. | p_10003492     56          0         .       -56         . |
         |------------------------------------------------------------|
     69. | p_10003859     16          .         .       -16         . |
         |------------------------------------------------------------|
     70. | p_10004859     24          .         0       -24        23 |
     71. | p_10004859     25          .         0       -25        22 |
     72. | p_10004859     26          .         0       -26        21 |
     73. | p_10004859     27          .         0       -27        20 |
     74. | p_10004859     28          .         0       -28        19 |
     75. | p_10004859     29          .         0       -29        18 |
     76. | p_10004859     30          .         0       -30        17 |
     77. | p_10004859     31          .         0       -31        16 |
     78. | p_10004859     32          .         0       -32        15 |
     79. | p_10004859     33          .         0       -33        14 |
     80. | p_10004859     34          .         0       -34        13 |
     81. | p_10004859     35          .         0       -35        12 |
     82. | p_10004859     36          .         0       -36        11 |
     83. | p_10004859     37          .         0       -37        10 |
     84. | p_10004859     38          .         0       -38         9 |
     85. | p_10004859     39          .         0       -39         8 |
     86. | p_10004859     40          .         0       -40         7 |
     87. | p_10004859     41          .         0       -41         6 |
     88. | p_10004859     42          .         0       -42         5 |
     89. | p_10004859     43          .         0       -43         4 |
     90. | p_10004859     44          .         0       -44         3 |
     91. | p_10004859     45          .         0       -45         2 |
     92. | p_10004859     46          .         0       -46         1 |
     93. | p_10004859     47          .         .       -47         . |
         |------------------------------------------------------------|
     94. | p_10006340     41          .         0       -41         6 |
     95. | p_10006340     42          .         0       -42         5 |
     96. | p_10006340     43          .         0       -43         4 |
     97. | p_10006340     44          .         0       -44         3 |
     98. | p_10006340     45          .         0       -45         2 |
     99. | p_10006340     46          .         0       -46         1 |
    100. | p_10006340     47          .         .       -47         . |
         +------------------------------------------------------------+

    Comment


    • #3
      I think you just need to do this:
      Code:
      bys id (wave): gen run = sum(dist_next_jump != 0)
      bys id run (wave): gen wanted = cond(dist_next_jump == 0, _N + 1 - _n, .)
      On your artificial example, (I construct wave trivially since it was not there):

      Code:
      clear
      input byte(id dist_next_jump my_var)
      1 4 .
      1 0 3
      1 0 2
      1 0 1
      1 2 .
      1 0 2
      1 0 1
      2 0 4
      2 0 3
      2 0 2
      2 0 1
      2 3 .
      2 3 .
      end
      
      gen wave = _n
      bys id (wave): gen run = sum(dist_next_jump != 0)
      bys id run (wave): gen wanted = cond(dist_next_jump == 0, _N + 1 - _n, .)
      which produces:
      Code:
      . list id dist_next_jump my_var wanted, noobs sepby(id) abbrev(15)
      
      
        +---------------------------------------+
        | id   dist_next_jump   my_var   wanted |
        |---------------------------------------|
        |  1                4        .        . |
        |  1                0        3        3 |
        |  1                0        2        2 |
        |  1                0        1        1 |
        |  1                2        .        . |
        |  1                0        2        2 |
        |  1                0        1        1 |
        |---------------------------------------|
        |  2                0        4        4 |
        |  2                0        3        3 |
        |  2                0        2        2 |
        |  2                0        1        1 |
        |  2                3        .        . |
        |  2                3        .        . |
        +---------------------------------------+
      Last edited by Hemanshu Kumar; 12 Mar 2025, 07:50.

      Comment


      • #4
        Originally posted by Nick Cox View Post
        Generic tip: Problems in counting down are often easier if you reverse time temporarily. Usually that just calls for negating a time variable and changing the sort order for a while.

        I think you may have, or may need, more rules than you state, but this may help.


        Code:
        * Example generated by -dataex-. For more info, type help dataex
        clear
        input str10 id float(wave dist_next_jump)
        "p_10000620" 31 12
        "p_10000620" 43 2
        "p_10000620" 45 0
        "p_10000620" 46 0
        "p_10000620" 47 0
        "p_10000620" 48 4
        "p_10000620" 52 0
        "p_10000620" 53 0
        "p_10000620" 54 0
        "p_10000620" 55 0
        "p_10000620" 56 0
        "p_10000620" 57 0
        "p_10000701" 24 .
        "p_10000701" 25 .
        "p_10000701" 26 .
        "p_10000701" 27 .
        "p_10000701" 28 .
        "p_10000701" 29 .
        "p_10000701" 30 .
        "p_10000701" 31 .
        "p_10000701" 32 .
        "p_10000701" 33 .
        "p_10000701" 34 .
        "p_10000701" 35 .
        "p_10000701" 36 .
        "p_10000701" 37 .
        "p_10000701" 38 .
        "p_10000701" 39 .
        "p_10000701" 40 .
        "p_10000701" 41 .
        "p_10000701" 42 .
        "p_10000701" 43 .
        "p_10000701" 44 .
        "p_10000701" 45 .
        "p_10000701" 46 .
        "p_10000701" 47 .
        "p_10001328" 4 .
        "p_10001328" 5 .
        "p_10001328" 6 .
        "p_10001328" 7 .
        "p_10001328" 8 .
        "p_10001328" 9 .
        "p_10001328" 10 .
        "p_10001328" 11 .
        "p_10001328" 12 .
        "p_10001328" 13 .
        "p_10001328" 14 .
        "p_10001328" 15 .
        "p_10001328" 16 .
        "p_10001328" 17 .
        "p_10001328" 18 .
        "p_10001328" 19 .
        "p_10001328" 20 .
        "p_10001328" 21 .
        "p_10001328" 22 .
        "p_10001328" 23 .
        "p_10001328" 24 .
        "p_10001328" 25 .
        "p_10001328" 26 .
        "p_10001328" 27 .
        "p_10001328" 28 .
        "p_10001328" 29 .
        "p_10001328" 30 .
        "p_10001328" 31 .
        "p_10001328" 32 .
        "p_10001600" 38 .
        "p_10003492" 53 3
        "p_10003492" 56 0
        "p_10003859" 16 .
        "p_10004859" 24 .
        "p_10004859" 25 .
        "p_10004859" 26 .
        "p_10004859" 27 .
        "p_10004859" 28 .
        "p_10004859" 29 .
        "p_10004859" 30 .
        "p_10004859" 31 .
        "p_10004859" 32 .
        "p_10004859" 33 .
        "p_10004859" 34 .
        "p_10004859" 35 .
        "p_10004859" 36 .
        "p_10004859" 37 .
        "p_10004859" 38 .
        "p_10004859" 39 .
        "p_10004859" 40 .
        "p_10004859" 41 .
        "p_10004859" 42 .
        "p_10004859" 43 .
        "p_10004859" 44 .
        "p_10004859" 45 .
        "p_10004859" 46 .
        "p_10004859" 47 .
        "p_10006340" 41 .
        "p_10006340" 42 .
        "p_10006340" 43 .
        "p_10006340" 44 .
        "p_10006340" 45 .
        "p_10006340" 46 .
        "p_10006340" 47 .
        end
        
        
        
        bysort id (wave) : gen wanted1 = cond(wave[_n+1] == wave + 1, 0, wave[_n+1] - wave)
        gen negwave = -wave
        bysort id (negwave) : gen wanted2 = 1 if wanted1 == 0 & wanted1[_n-1] != 0
        by id : replace wanted2 = wanted2[_n-1] + 1 if missing(wanted2) & wanted1 == 0
        
        sort id wave
        
        list, sepby(id)
        
        +------------------------------------------------------------+
        | id wave dist_n~p wanted1 negwave wanted2 |
        |------------------------------------------------------------|
        1. | p_10000620 31 12 12 -31 . |
        2. | p_10000620 43 2 2 -43 . |
        3. | p_10000620 45 0 0 -45 3 |
        4. | p_10000620 46 0 0 -46 2 |
        5. | p_10000620 47 0 0 -47 1 |
        6. | p_10000620 48 4 4 -48 . |
        7. | p_10000620 52 0 0 -52 5 |
        8. | p_10000620 53 0 0 -53 4 |
        9. | p_10000620 54 0 0 -54 3 |
        10. | p_10000620 55 0 0 -55 2 |
        11. | p_10000620 56 0 0 -56 1 |
        12. | p_10000620 57 0 . -57 . |
        |------------------------------------------------------------|
        13. | p_10000701 24 . 0 -24 23 |
        14. | p_10000701 25 . 0 -25 22 |
        15. | p_10000701 26 . 0 -26 21 |
        16. | p_10000701 27 . 0 -27 20 |
        17. | p_10000701 28 . 0 -28 19 |
        18. | p_10000701 29 . 0 -29 18 |
        19. | p_10000701 30 . 0 -30 17 |
        20. | p_10000701 31 . 0 -31 16 |
        21. | p_10000701 32 . 0 -32 15 |
        22. | p_10000701 33 . 0 -33 14 |
        23. | p_10000701 34 . 0 -34 13 |
        24. | p_10000701 35 . 0 -35 12 |
        25. | p_10000701 36 . 0 -36 11 |
        26. | p_10000701 37 . 0 -37 10 |
        27. | p_10000701 38 . 0 -38 9 |
        28. | p_10000701 39 . 0 -39 8 |
        29. | p_10000701 40 . 0 -40 7 |
        30. | p_10000701 41 . 0 -41 6 |
        31. | p_10000701 42 . 0 -42 5 |
        32. | p_10000701 43 . 0 -43 4 |
        33. | p_10000701 44 . 0 -44 3 |
        34. | p_10000701 45 . 0 -45 2 |
        35. | p_10000701 46 . 0 -46 1 |
        36. | p_10000701 47 . . -47 . |
        |------------------------------------------------------------|
        37. | p_10001328 4 . 0 -4 28 |
        38. | p_10001328 5 . 0 -5 27 |
        39. | p_10001328 6 . 0 -6 26 |
        40. | p_10001328 7 . 0 -7 25 |
        41. | p_10001328 8 . 0 -8 24 |
        42. | p_10001328 9 . 0 -9 23 |
        43. | p_10001328 10 . 0 -10 22 |
        44. | p_10001328 11 . 0 -11 21 |
        45. | p_10001328 12 . 0 -12 20 |
        46. | p_10001328 13 . 0 -13 19 |
        47. | p_10001328 14 . 0 -14 18 |
        48. | p_10001328 15 . 0 -15 17 |
        49. | p_10001328 16 . 0 -16 16 |
        50. | p_10001328 17 . 0 -17 15 |
        51. | p_10001328 18 . 0 -18 14 |
        52. | p_10001328 19 . 0 -19 13 |
        53. | p_10001328 20 . 0 -20 12 |
        54. | p_10001328 21 . 0 -21 11 |
        55. | p_10001328 22 . 0 -22 10 |
        56. | p_10001328 23 . 0 -23 9 |
        57. | p_10001328 24 . 0 -24 8 |
        58. | p_10001328 25 . 0 -25 7 |
        59. | p_10001328 26 . 0 -26 6 |
        60. | p_10001328 27 . 0 -27 5 |
        61. | p_10001328 28 . 0 -28 4 |
        62. | p_10001328 29 . 0 -29 3 |
        63. | p_10001328 30 . 0 -30 2 |
        64. | p_10001328 31 . 0 -31 1 |
        65. | p_10001328 32 . . -32 . |
        |------------------------------------------------------------|
        66. | p_10001600 38 . . -38 . |
        |------------------------------------------------------------|
        67. | p_10003492 53 3 3 -53 . |
        68. | p_10003492 56 0 . -56 . |
        |------------------------------------------------------------|
        69. | p_10003859 16 . . -16 . |
        |------------------------------------------------------------|
        70. | p_10004859 24 . 0 -24 23 |
        71. | p_10004859 25 . 0 -25 22 |
        72. | p_10004859 26 . 0 -26 21 |
        73. | p_10004859 27 . 0 -27 20 |
        74. | p_10004859 28 . 0 -28 19 |
        75. | p_10004859 29 . 0 -29 18 |
        76. | p_10004859 30 . 0 -30 17 |
        77. | p_10004859 31 . 0 -31 16 |
        78. | p_10004859 32 . 0 -32 15 |
        79. | p_10004859 33 . 0 -33 14 |
        80. | p_10004859 34 . 0 -34 13 |
        81. | p_10004859 35 . 0 -35 12 |
        82. | p_10004859 36 . 0 -36 11 |
        83. | p_10004859 37 . 0 -37 10 |
        84. | p_10004859 38 . 0 -38 9 |
        85. | p_10004859 39 . 0 -39 8 |
        86. | p_10004859 40 . 0 -40 7 |
        87. | p_10004859 41 . 0 -41 6 |
        88. | p_10004859 42 . 0 -42 5 |
        89. | p_10004859 43 . 0 -43 4 |
        90. | p_10004859 44 . 0 -44 3 |
        91. | p_10004859 45 . 0 -45 2 |
        92. | p_10004859 46 . 0 -46 1 |
        93. | p_10004859 47 . . -47 . |
        |------------------------------------------------------------|
        94. | p_10006340 41 . 0 -41 6 |
        95. | p_10006340 42 . 0 -42 5 |
        96. | p_10006340 43 . 0 -43 4 |
        97. | p_10006340 44 . 0 -44 3 |
        98. | p_10006340 45 . 0 -45 2 |
        99. | p_10006340 46 . 0 -46 1 |
        100. | p_10006340 47 . . -47 . |
        +------------------------------------------------------------+
        I'm really grateful for this answer, thanks a lot!

        Comment


        • #5
          A general purpose tool in this territory is tsspell from SSC. Here is an example.

          See also https://journals.sagepub.com/doi/pdf...867X0700700209

          Code:
          * Example generated by -dataex-. For more info, type help dataex
          clear
          input str10 id float(wave dist_next_jump)
          "p_10000620" 31 12
          "p_10000620" 43  2
          "p_10000620" 45  0
          "p_10000620" 46  0
          "p_10000620" 47  0
          "p_10000620" 48  4
          "p_10000620" 52  0
          "p_10000620" 53  0
          "p_10000620" 54  0
          "p_10000620" 55  0
          "p_10000620" 56  0
          "p_10000620" 57  0
          "p_10000701" 24  .
          "p_10000701" 25  .
          "p_10000701" 26  .
          "p_10000701" 27  .
          "p_10000701" 28  .
          "p_10000701" 29  .
          "p_10000701" 30  .
          "p_10000701" 31  .
          "p_10000701" 32  .
          "p_10000701" 33  .
          "p_10000701" 34  .
          "p_10000701" 35  .
          "p_10000701" 36  .
          "p_10000701" 37  .
          "p_10000701" 38  .
          "p_10000701" 39  .
          "p_10000701" 40  .
          "p_10000701" 41  .
          "p_10000701" 42  .
          "p_10000701" 43  .
          "p_10000701" 44  .
          "p_10000701" 45  .
          "p_10000701" 46  .
          "p_10000701" 47  .
          "p_10001328"  4  .
          "p_10001328"  5  .
          "p_10001328"  6  .
          "p_10001328"  7  .
          "p_10001328"  8  .
          "p_10001328"  9  .
          "p_10001328" 10  .
          "p_10001328" 11  .
          "p_10001328" 12  .
          "p_10001328" 13  .
          "p_10001328" 14  .
          "p_10001328" 15  .
          "p_10001328" 16  .
          "p_10001328" 17  .
          "p_10001328" 18  .
          "p_10001328" 19  .
          "p_10001328" 20  .
          "p_10001328" 21  .
          "p_10001328" 22  .
          "p_10001328" 23  .
          "p_10001328" 24  .
          "p_10001328" 25  .
          "p_10001328" 26  .
          "p_10001328" 27  .
          "p_10001328" 28  .
          "p_10001328" 29  .
          "p_10001328" 30  .
          "p_10001328" 31  .
          "p_10001328" 32  .
          "p_10001600" 38  .
          "p_10003492" 53  3
          "p_10003492" 56  0
          "p_10003859" 16  .
          "p_10004859" 24  .
          "p_10004859" 25  .
          "p_10004859" 26  .
          "p_10004859" 27  .
          "p_10004859" 28  .
          "p_10004859" 29  .
          "p_10004859" 30  .
          "p_10004859" 31  .
          "p_10004859" 32  .
          "p_10004859" 33  .
          "p_10004859" 34  .
          "p_10004859" 35  .
          "p_10004859" 36  .
          "p_10004859" 37  .
          "p_10004859" 38  .
          "p_10004859" 39  .
          "p_10004859" 40  .
          "p_10004859" 41  .
          "p_10004859" 42  .
          "p_10004859" 43  .
          "p_10004859" 44  .
          "p_10004859" 45  .
          "p_10004859" 46  .
          "p_10004859" 47  .
          "p_10006340" 41  .
          "p_10006340" 42  .
          "p_10006340" 43  .
          "p_10006340" 44  .
          "p_10006340" 45  .
          "p_10006340" 46  .
          "p_10006340" 47  .
          end
          
          egen nid = group(id), label
          tsset nid wave 
          
          tsspell, fcond(D.wave > 1)
          
          list, sepby(id _spell)
          
               +------------------------------------------------------------------+
               |         id   wave   dist_n~p          nid   _spell   _seq   _end |
               |------------------------------------------------------------------|
            1. | p_10000620     31         12   p_10000620        1      1      1 |
               |------------------------------------------------------------------|
            2. | p_10000620     43          2   p_10000620        2      1      1 |
               |------------------------------------------------------------------|
            3. | p_10000620     45          0   p_10000620        3      1      0 |
            4. | p_10000620     46          0   p_10000620        3      2      0 |
            5. | p_10000620     47          0   p_10000620        3      3      0 |
            6. | p_10000620     48          4   p_10000620        3      4      1 |
               |------------------------------------------------------------------|
            7. | p_10000620     52          0   p_10000620        4      1      0 |
            8. | p_10000620     53          0   p_10000620        4      2      0 |
            9. | p_10000620     54          0   p_10000620        4      3      0 |
           10. | p_10000620     55          0   p_10000620        4      4      0 |
           11. | p_10000620     56          0   p_10000620        4      5      0 |
           12. | p_10000620     57          0   p_10000620        4      6      1 |
               |------------------------------------------------------------------|
           13. | p_10000701     24          .   p_10000701        1      1      0 |
           14. | p_10000701     25          .   p_10000701        1      2      0 |
           15. | p_10000701     26          .   p_10000701        1      3      0 |
           16. | p_10000701     27          .   p_10000701        1      4      0 |
           17. | p_10000701     28          .   p_10000701        1      5      0 |
           18. | p_10000701     29          .   p_10000701        1      6      0 |
           19. | p_10000701     30          .   p_10000701        1      7      0 |
           20. | p_10000701     31          .   p_10000701        1      8      0 |
           21. | p_10000701     32          .   p_10000701        1      9      0 |
           22. | p_10000701     33          .   p_10000701        1     10      0 |
           23. | p_10000701     34          .   p_10000701        1     11      0 |
           24. | p_10000701     35          .   p_10000701        1     12      0 |
           25. | p_10000701     36          .   p_10000701        1     13      0 |
           26. | p_10000701     37          .   p_10000701        1     14      0 |
           27. | p_10000701     38          .   p_10000701        1     15      0 |
           28. | p_10000701     39          .   p_10000701        1     16      0 |
           29. | p_10000701     40          .   p_10000701        1     17      0 |
           30. | p_10000701     41          .   p_10000701        1     18      0 |
           31. | p_10000701     42          .   p_10000701        1     19      0 |
           32. | p_10000701     43          .   p_10000701        1     20      0 |
           33. | p_10000701     44          .   p_10000701        1     21      0 |
           34. | p_10000701     45          .   p_10000701        1     22      0 |
           35. | p_10000701     46          .   p_10000701        1     23      0 |
           36. | p_10000701     47          .   p_10000701        1     24      1 |
               |------------------------------------------------------------------|
           37. | p_10001328      4          .   p_10001328        1      1      0 |
           38. | p_10001328      5          .   p_10001328        1      2      0 |
           39. | p_10001328      6          .   p_10001328        1      3      0 |
           40. | p_10001328      7          .   p_10001328        1      4      0 |
           41. | p_10001328      8          .   p_10001328        1      5      0 |
           42. | p_10001328      9          .   p_10001328        1      6      0 |
           43. | p_10001328     10          .   p_10001328        1      7      0 |
           44. | p_10001328     11          .   p_10001328        1      8      0 |
           45. | p_10001328     12          .   p_10001328        1      9      0 |
           46. | p_10001328     13          .   p_10001328        1     10      0 |
           47. | p_10001328     14          .   p_10001328        1     11      0 |
           48. | p_10001328     15          .   p_10001328        1     12      0 |
           49. | p_10001328     16          .   p_10001328        1     13      0 |
           50. | p_10001328     17          .   p_10001328        1     14      0 |
           51. | p_10001328     18          .   p_10001328        1     15      0 |
           52. | p_10001328     19          .   p_10001328        1     16      0 |
           53. | p_10001328     20          .   p_10001328        1     17      0 |
           54. | p_10001328     21          .   p_10001328        1     18      0 |
           55. | p_10001328     22          .   p_10001328        1     19      0 |
           56. | p_10001328     23          .   p_10001328        1     20      0 |
           57. | p_10001328     24          .   p_10001328        1     21      0 |
           58. | p_10001328     25          .   p_10001328        1     22      0 |
           59. | p_10001328     26          .   p_10001328        1     23      0 |
           60. | p_10001328     27          .   p_10001328        1     24      0 |
           61. | p_10001328     28          .   p_10001328        1     25      0 |
           62. | p_10001328     29          .   p_10001328        1     26      0 |
           63. | p_10001328     30          .   p_10001328        1     27      0 |
           64. | p_10001328     31          .   p_10001328        1     28      0 |
           65. | p_10001328     32          .   p_10001328        1     29      1 |
               |------------------------------------------------------------------|
           66. | p_10001600     38          .   p_10001600        1      1      1 |
               |------------------------------------------------------------------|
           67. | p_10003492     53          3   p_10003492        1      1      1 |
               |------------------------------------------------------------------|
           68. | p_10003492     56          0   p_10003492        2      1      1 |
               |------------------------------------------------------------------|
           69. | p_10003859     16          .   p_10003859        1      1      1 |
               |------------------------------------------------------------------|
           70. | p_10004859     24          .   p_10004859        1      1      0 |
           71. | p_10004859     25          .   p_10004859        1      2      0 |
           72. | p_10004859     26          .   p_10004859        1      3      0 |
           73. | p_10004859     27          .   p_10004859        1      4      0 |
           74. | p_10004859     28          .   p_10004859        1      5      0 |
           75. | p_10004859     29          .   p_10004859        1      6      0 |
           76. | p_10004859     30          .   p_10004859        1      7      0 |
           77. | p_10004859     31          .   p_10004859        1      8      0 |
           78. | p_10004859     32          .   p_10004859        1      9      0 |
           79. | p_10004859     33          .   p_10004859        1     10      0 |
           80. | p_10004859     34          .   p_10004859        1     11      0 |
           81. | p_10004859     35          .   p_10004859        1     12      0 |
           82. | p_10004859     36          .   p_10004859        1     13      0 |
           83. | p_10004859     37          .   p_10004859        1     14      0 |
           84. | p_10004859     38          .   p_10004859        1     15      0 |
           85. | p_10004859     39          .   p_10004859        1     16      0 |
           86. | p_10004859     40          .   p_10004859        1     17      0 |
           87. | p_10004859     41          .   p_10004859        1     18      0 |
           88. | p_10004859     42          .   p_10004859        1     19      0 |
           89. | p_10004859     43          .   p_10004859        1     20      0 |
           90. | p_10004859     44          .   p_10004859        1     21      0 |
           91. | p_10004859     45          .   p_10004859        1     22      0 |
           92. | p_10004859     46          .   p_10004859        1     23      0 |
           93. | p_10004859     47          .   p_10004859        1     24      1 |
               |------------------------------------------------------------------|
           94. | p_10006340     41          .   p_10006340        1      1      0 |
           95. | p_10006340     42          .   p_10006340        1      2      0 |
           96. | p_10006340     43          .   p_10006340        1      3      0 |
           97. | p_10006340     44          .   p_10006340        1      4      0 |
           98. | p_10006340     45          .   p_10006340        1      5      0 |
           99. | p_10006340     46          .   p_10006340        1      6      0 |
          100. | p_10006340     47          .   p_10006340        1      7      1 |
               +------------------------------------------------------------------+

          Comment

          Working...
          X