Announcement

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

  • Replace values of a variable depending on a series of id variables

    Hi,

    Im currently trying to calcule a growth rate for a variable but the way that my data is organized does not let me calcule the growth rate in a proper way.



    Code:
    * Example generated by -dataex-. To install: ssc install dataex
    clear
    input str64 Programa str2 Inscrito long(Año totales) float t_crecimiento
    "ADMINISTRACIÓN DE AGRONEGOCIOS  MIXTA"   "No" 2014   9          .
    "ADMINISTRACIÓN DE AGRONEGOCIOS  MIXTA"   "No" 2015  21  133.33333
    "ADMINISTRACIÓN DE AGRONEGOCIOS  MIXTA"   "No" 2016  15  -28.57143
    "ADMINISTRACIÓN DE AGRONEGOCIOS  MIXTA"   "No" 2017   8  -46.66667
    "ADMINISTRACIÓN DE AGRONEGOCIOS  MIXTA"   "No" 2018  15       87.5
    "ADMINISTRACIÓN DE AGRONEGOCIOS  MIXTA"   "No" 2019   9        -40
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2005  28   211.1111
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2006 107  282.14285
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2007 113   5.607477
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2008 137   21.23894
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2009 356    159.854
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2010 652   83.14606
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2011 513  -21.31902
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2012 439 -14.424952
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2013 371  -15.48975
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2014 215  -42.04852
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2015 216   .4651163
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2016 143 -33.796295
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2017 137  -4.195804
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2018 101  -26.27737
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2019  48  -52.47525
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2005   4  -91.66666
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2006  15        275
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2007  15          0
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2008  18         20
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2009  53  194.44444
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2010 109  105.66038
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2011  70 -35.779816
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2012  66  -5.714286
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2013  48  -27.27273
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2014  28  -41.66667
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2015  29  3.5714285
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2016  14  -51.72414
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2017  16  14.285714
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2018  19      18.75
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2019   5  -73.68421
    "CIENCIA POLÍTICA  MIXTA"                 "No" 2017  30        500
    "CIENCIA POLÍTICA  MIXTA"                 "No" 2018  44   46.66667
    "CIENCIA POLÍTICA  MIXTA"                 "No" 2019  24  -45.45454
    "COMPUTACIÓN CIENTÍFICA  MIXTA"          "No" 2015   8 -66.666664
    "COMPUTACIÓN CIENTÍFICA  MIXTA"          "No" 2016   8          0
    "COMPUTACIÓN CIENTÍFICA  MIXTA"          "No" 2017   4        -50
    "COMPUTACIÓN CIENTÍFICA  MIXTA"          "No" 2018   4          0
    "COMPUTACIÓN CIENTÍFICA  MIXTA"          "No" 2019   4          0
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2005  25        525
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2006  69        176
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2007  83  20.289856
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2008  83          0
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2009 156   87.95181
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2010 303   94.23077
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2011 191 -36.963696
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2012 233   21.98953
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2013 147  -36.90987
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2014  83  -43.53741
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2015  90   8.433735
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2016  49  -45.55556
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2017  47 -4.0816326
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2018  35 -25.531916
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2019  17  -51.42857
    "COMUNICACIÓN Y ENTRETENIMIENTO DIGITAL " "No" 2015  31   82.35294
    "COMUNICACIÓN Y ENTRETENIMIENTO DIGITAL " "No" 2016  32  3.2258065
    "COMUNICACIÓN Y ENTRETENIMIENTO DIGITAL " "No" 2017  27    -15.625
    "COMUNICACIÓN Y ENTRETENIMIENTO DIGITAL " "No" 2018  20 -25.925926
    "COMUNICACIÓN Y ENTRETENIMIENTO DIGITAL " "No" 2019  17        -15
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2005  10  -41.17647
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2006  45        350
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2007  70   55.55556
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2008  76   8.571428
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2009 174  128.94737
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2010 380   118.3908
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2011 195  -48.68421
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2012 346    77.4359
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2013 241  -30.34682
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2014 154 -36.099586
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2015 154          0
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2016 113 -26.623377
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2017 148   30.97345
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2018  92 -37.837837
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2019  44  -52.17391
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2005  15  -65.90909
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2006  37  146.66667
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2007  42  13.513514
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2008  45   7.142857
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2009 105  133.33333
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2010 221   110.4762
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2011 103  -53.39367
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2012 157   52.42719
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2013 107 -31.847134
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2014  78 -27.102804
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2015  82   5.128205
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2016  56  -31.70732
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2017  49      -12.5
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2018  48 -2.0408163
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2019  13 -72.916664
    "CONTADURÍA PÚBLICA "                    "No" 2005  11 -15.384615
    "CONTADURÍA PÚBLICA "                    "No" 2006  31  181.81818
    "CONTADURÍA PÚBLICA  MIXTA"              "No" 2005  15   -51.6129
    "CONTADURÍA PÚBLICA  MIXTA"              "No" 2006  29   93.33334
    "CONTADURÍA PÚBLICA  MIXTA"              "No" 2007  86  196.55173
    "CONTADURÍA PÚBLICA  MIXTA"              "No" 2008 104  20.930233
    end

    This is an example of my dataset, I used the next command to generate the growth rate:

    by Inscrito: gen t_crecimiento=((totales[_n]-totales[_n-1])/totales[_n-1])*100

    The problem is that I need to replace the value in the variable "t_crecimiento" (growth rate) for a missing value in the first observation everytime the variable "Programa" changes because when I generate the growth rates it genereate values as if all the identifiers where 1.

    Can anyone help me with a way that in the first obs everytime the variable "Programa" changes the value in "t_crecimiento" gets replaced with a missing value?, I would do it manually but this i s just an example and my database has more than 2000 obs.

    Thank you very much.

  • #2
    The problem is not with your data organization. It is with your code. Use this:

    Code:
    * Example generated by -dataex-. To install: ssc install dataex
    clear
    input str64 Programa str2 Inscrito long(Año totales)
    "ADMINISTRACIÓN DE AGRONEGOCIOS  MIXTA"   "No" 2014   9
    "ADMINISTRACIÓN DE AGRONEGOCIOS  MIXTA"   "No" 2015  21
    "ADMINISTRACIÓN DE AGRONEGOCIOS  MIXTA"   "No" 2016  15
    "ADMINISTRACIÓN DE AGRONEGOCIOS  MIXTA"   "No" 2017   8
    "ADMINISTRACIÓN DE AGRONEGOCIOS  MIXTA"   "No" 2018  15
    "ADMINISTRACIÓN DE AGRONEGOCIOS  MIXTA"   "No" 2019   9
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2005  28
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2006 107
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2007 113
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2008 137
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2009 356
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2010 652
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2011 513
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2012 439
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2013 371
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2014 215
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2015 216
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2016 143
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2017 137
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2018 101
    "ADMINISTRACIÓN DE EMPRESAS "             "No" 2019  48
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2005   4
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2006  15
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2007  15
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2008  18
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2009  53
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2010 109
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2011  70
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2012  66
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2013  48
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2014  28
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2015  29
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2016  14
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2017  16
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2018  19
    "ADMINISTRACIÓN DE EMPRESAS TURÍSTICAS " "No" 2019   5
    "CIENCIA POLÍTICA  MIXTA"                 "No" 2017  30
    "CIENCIA POLÍTICA  MIXTA"                 "No" 2018  44
    "CIENCIA POLÍTICA  MIXTA"                 "No" 2019  24
    "COMPUTACIÓN CIENTÍFICA  MIXTA"          "No" 2015   8
    "COMPUTACIÓN CIENTÍFICA  MIXTA"          "No" 2016   8
    "COMPUTACIÓN CIENTÍFICA  MIXTA"          "No" 2017   4
    "COMPUTACIÓN CIENTÍFICA  MIXTA"          "No" 2018   4
    "COMPUTACIÓN CIENTÍFICA  MIXTA"          "No" 2019   4
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2005  25
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2006  69
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2007  83
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2008  83
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2009 156
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2010 303
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2011 191
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2012 233
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2013 147
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2014  83
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2015  90
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2016  49
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2017  47
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2018  35
    "COMUNICACIÓN GRÁFICA PUBLICITARIA "     "No" 2019  17
    "COMUNICACIÓN Y ENTRETENIMIENTO DIGITAL " "No" 2015  31
    "COMUNICACIÓN Y ENTRETENIMIENTO DIGITAL " "No" 2016  32
    "COMUNICACIÓN Y ENTRETENIMIENTO DIGITAL " "No" 2017  27
    "COMUNICACIÓN Y ENTRETENIMIENTO DIGITAL " "No" 2018  20
    "COMUNICACIÓN Y ENTRETENIMIENTO DIGITAL " "No" 2019  17
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2005  10
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2006  45
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2007  70
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2008  76
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2009 174
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2010 380
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2011 195
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2012 346
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2013 241
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2014 154
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2015 154
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2016 113
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2017 148
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2018  92
    "COMUNICACIÓN Y LENGUAJES AUDIOVISUALES " "No" 2019  44
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2005  15
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2006  37
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2007  42
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2008  45
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2009 105
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2010 221
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2011 103
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2012 157
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2013 107
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2014  78
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2015  82
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2016  56
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2017  49
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2018  48
    "COMUNICACIÓN Y RELACIONES CORPORATIVAS " "No" 2019  13
    "CONTADURÍA PÚBLICA "                    "No" 2005  11
    "CONTADURÍA PÚBLICA "                    "No" 2006  31
    "CONTADURÍA PÚBLICA  MIXTA"              "No" 2005  15
    "CONTADURÍA PÚBLICA  MIXTA"              "No" 2006  29
    "CONTADURÍA PÚBLICA  MIXTA"              "No" 2007  86
    "CONTADURÍA PÚBLICA  MIXTA"              "No" 2008 104
    end
    
    
    encode Programa, gen(program)
    xtset program Año
    by program: gen crecimiento = 100*D1.totales/L1.totales

    Comment


    • #3
      Clyde thanks for you quick response.

      Unfortunately it does not let me use the xtset command due to repeated time values within my panel data.

      Comment


      • #4
        Well, then either there is an error in your data or you are attempting a calculation that cannot be done.

        The growth rate calculation requires that for any given program and year there be only one observation: otherwise it would be impossible to know which of several observations corresponds to "the preceding year."

        So, first you need to find out where the observations with repeated time values are and deal with them. Start with
        Code:
        duplicates tag Programma Año, gen(flag)
        browse if flag
        This will enable you to see them. It may be that the observations that are duplicates on the program and year are also complete duplicates on all other variables. If so, running -duplicates drop- will eliminate them with no loss of information, and you can go ahead and use -xtset- and the rest of the code.

        If not, then you have to decide which of the duplicate observations has the correct values and keep that and eliminate the others. Or perhaps you will need to combine the conflicting observations in some way (means, median, other possibilities) to reduce to a single observation for each program and year. The details of doing that will evidently depend on exactly what you find in the duplicated observations.

        Bear in mind also that you had some reason to think that there would only be one observation per year for each program. The fact that this is not so means either that you did not understand your data set and were attempting a calculation that has no meaning in it, or that your data set contains errors. If you now understand your data set better, then you can abandon the attempt to calculate meaningless "growth rates" and move on to something else. But, and I think this is more likely, if the data set was incorrect because it contained observations it should not have, then the entire data management process that created that data set is now suspect. If the data set contains these errors, who knows what other mistakes it may have that do not happen to show up early on. You should contact whoever provided that data set for you and discuss what happened. The mistakes that occurred during creation of that data set should be fixed, and you should use the corrected data set, not the one you currently have.

        Comment


        • #5
          Thank you so much Clyde I will look further on my dataset to find the error and then use the command you provided me.


          For future people who looks through this trying to do the same I just created a new id variable with the contents of the id variables:

          gen id= Inscrito + Facultad

          sort Inscrito Facultad Año

          encode id, gen(id1)

          sort id1 Año

          xtset id1 Año
          by id1: gen t_crecimiento = 100*D1.totales/L1.totales
          Last edited by Juan Esteban Berrio; 29 May 2019, 16:23. Reason: Post the solution based on the suggestions of Clyde

          Comment

          Working...
          X