Announcement

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

  • Creat new variables based on values from an existing variable

    Hi Everyone,

    I would like to generate three variables as shown below: code_a1, code_a2, and code_a3. These are the values included in the variable code_a. Could anyone please help with this?
    The main example:

    Code:
    * Example generated by -dataex-. To install: ssc install dataex
    clear
    input str1 comp int(year code) byte code_a
    "A" 2004 1517 15
    "A" 2004 1517 15
    "A" 2004 1517 15
    "A" 2004 1517 15
    "A" 2004 1517 15
    "A" 2004 1517 15
    "A" 2004 1517 15
    "A" 2004 1517 15
    "A" 2004 3318 33
    "A" 2004 3318 33
    "A" 2004 3318 33
    "A" 2004 3318 33
    "A" 2004 3318 33
    "A" 2004 3318 33
    "A" 2004 3318 33
    "A" 2004 3318 33
    "A" 2004 3318 33
    "A" 2004 3318 33
    "A" 2005 1710 17
    "A" 2005 1710 17
    "A" 2005 1710 17
    "A" 2005 1710 17
    "A" 2005 1710 17
    "A" 2005 1710 17
    "A" 2005 1710 17
    "A" 2005 1710 17
    "A" 2005 1710 17
    "A" 2005 1710 17
    "A" 2005 5016 50
    "A" 2005 5016 50
    "A" 2005 5016 50
    "A" 2005 5016 50
    "A" 2005 5016 50
    "A" 2005 5016 50
    "B" 2004 2520 25
    "B" 2004 2520 25
    "B" 2004 2520 25
    "B" 2004 2520 25
    "B" 2004 2520 25
    "B" 2004 2520 25
    "B" 2004 2520 25
    "B" 2004 2520 25
    "B" 2004 4410 44
    "B" 2004 4410 44
    "B" 2004 4410 44
    "B" 2004 4410 44
    "B" 2004 4410 44
    "B" 2004 4410 44
    "B" 2004 4410 44
    "B" 2004 4410 44
    "B" 2004 4410 44
    "B" 2004 4410 44
    "B" 2005 2718 27
    "B" 2005 2718 27
    "B" 2005 2718 27
    "B" 2005 2718 27
    "B" 2005 2718 27
    "B" 2005 2718 27
    "B" 2005 2718 27
    "B" 2005 9025 90
    "B" 2005 9025 90
    "B" 2005 9025 90
    "B" 2005 9025 90
    "B" 2005 8829 88
    "B" 2005 8829 88
    "B" 2005 8829 88
    "B" 2005 8829 88
    "B" 2005 8829 88
    end




    I would like to have three more variables as follow:



    Code:
    * Example generated by -dataex-. To install: ssc install dataex
    clear
    input str1 comp int(year code) byte(code_a code_a1 code_a2 code_a3)
    "A" 2004 1517 15 15 33  .
    "A" 2004 1517 15 15 33  .
    "A" 2004 1517 15 15 33  .
    "A" 2004 1517 15 15 33  .
    "A" 2004 1517 15 15 33  .
    "A" 2004 1517 15 15 33  .
    "A" 2004 1517 15 15 33  .
    "A" 2004 1517 15 15 33  .
    "A" 2004 3318 33 15 33  .
    "A" 2004 3318 33 15 33  .
    "A" 2004 3318 33 15 33  .
    "A" 2004 3318 33 15 33  .
    "A" 2004 3318 33 15 33  .
    "A" 2004 3318 33 15 33  .
    "A" 2004 3318 33 15 33  .
    "A" 2004 3318 33 15 33  .
    "A" 2004 3318 33 15 33  .
    "A" 2004 3318 33 15 33  .
    "A" 2005 1710 17 17 50  .
    "A" 2005 1710 17 17 50  .
    "A" 2005 1710 17 17 50  .
    "A" 2005 1710 17 17 50  .
    "A" 2005 1710 17 17 50  .
    "A" 2005 1710 17 17 50  .
    "A" 2005 1710 17 17 50  .
    "A" 2005 1710 17 17 50  .
    "A" 2005 1710 17 17 50  .
    "A" 2005 1710 17 17 50  .
    "A" 2005 5016 50 17 50  .
    "A" 2005 5016 50 17 50  .
    "A" 2005 5016 50 17 50  .
    "A" 2005 5016 50 17 50  .
    "A" 2005 5016 50 17 50  .
    "A" 2005 5016 50 17 50  .
    "B" 2004 2520 25 25 44  .
    "B" 2004 2520 25 25 44  .
    "B" 2004 2520 25 25 44  .
    "B" 2004 2520 25 25 44  .
    "B" 2004 2520 25 25 44  .
    "B" 2004 2520 25 25 44  .
    "B" 2004 2520 25 25 44  .
    "B" 2004 2520 25 25 44  .
    "B" 2004 4410 44 25 44  .
    "B" 2004 4410 44 25 44  .
    "B" 2004 4410 44 25 44  .
    "B" 2004 4410 44 25 44  .
    "B" 2004 4410 44 25 44  .
    "B" 2004 4410 44 25 44  .
    "B" 2004 4410 44 25 44  .
    "B" 2004 4410 44 25 44  .
    "B" 2004 4410 44 25 44  .
    "B" 2004 4410 44 25 44  .
    "B" 2005 2718 27 27 90 88
    "B" 2005 2718 27 27 90 88
    "B" 2005 2718 27 27 90 88
    "B" 2005 2718 27 27 90 88
    "B" 2005 2718 27 27 90 88
    "B" 2005 2718 27 27 90 88
    "B" 2005 2718 27 27 90 88
    "B" 2005 9025 90 27 90 88
    "B" 2005 9025 90 27 90 88
    "B" 2005 9025 90 27 90 88
    "B" 2005 9025 90 27 90 88
    "B" 2005 8829 88 27 90 88
    "B" 2005 8829 88 27 90 88
    "B" 2005 8829 88 27 90 88
    "B" 2005 8829 88 27 90 88
    "B" 2005 8829 88 27 90 88
    end


    Thank you all!

  • #2
    Code:
    bysort comp year: gen which = sum(code_a != code_a[_n-1])
    
    forval j = 1/3 { 
        egen code_a`j' = mean(cond(which == `j', code_a, .)), by(comp year)
    }
    See (e.g.) Section 9 of https://www.stata-journal.com/articl...article=dm0055

    Comment


    • #3
      Thank you, Nick! it works very well

      Comment

      Working...
      X