I'm dealing with (unbalanced) panel data.
Code:
* Example generated by -dataex-. To install: ssc install dataex clear input long gvkey double year str10 rating float(rating2 changerating changetospec) 1078 2002 "AA" 2 . 0 1078 2003 "AA" 2 . 0 1078 2004 "AA" 2 . 0 1078 2005 "AA" 2 . 0 1078 2006 "AA" 2 . 0 1078 2007 "AA" 2 . 0 1078 2008 "AA" 2 . 0 1078 2009 "AA" 2 . 0 1078 2010 "AA" 2 . 0 1078 2011 "AA" 2 . 0 1078 2012 "A" 3 . 0 1078 2013 "A" 3 . 0 1078 2014 "A" 3 . 0 1078 2015 "A" 3 . 0 1078 2016 "A" 3 . 0 1161 2002 "B" . . 0 1161 2003 "B" . . 0 1161 2004 "B" . . 0 1161 2005 "B" . . 0 1161 2006 "B" . . 0 1161 2007 "B" . . 0 1161 2008 "B" . . 0 1161 2009 "B" . . 0 1161 2010 "B" . . 0 1161 2011 "B" . . 0 1161 2012 "B" . . 0 1161 2013 "B" . . 0 1161 2014 "B" . . 0 1161 2015 "B" . . 0 1161 2016 "CCC" . . 0 1209 2002 "A" 3 . 0 1209 2003 "A" 3 . 0 1209 2004 "A" 3 . 0 1209 2005 "A" 3 . 0 1209 2006 "A" 3 . 0 1209 2007 "A" 3 . 0 1209 2008 "A" 3 . 0 1209 2009 "A" 3 . 0 1209 2010 "A" 3 . 0 1209 2011 "A" 3 . 0 1209 2012 "A" 3 . 0 1209 2013 "A" 3 . 0 1209 2014 "A" 3 . 0 1209 2015 "A" 3 . 0 1209 2016 "A" 3 . 0 1239 2002 "BBB" 10 . 0 1239 2003 "BBB" 10 . 1 1239 2004 "BBB" 10 . 0 1239 2005 "BBB" 10 . 1 1239 2006 "BBB" 10 . 0 1239 2007 "BBB" 10 . 0 1239 2008 "BBB" 10 . 0 1239 2009 "BBB" 10 . 0 1239 2010 "BBB" 10 . 0 1356 2002 "A" 3 . 0 1356 2003 "A" 3 . 0 1356 2004 "A" 3 . 0 1356 2005 "A" 3 . 0 1356 2006 "A" 3 . 0 1356 2007 "BBB" 10 . 0 1356 2008 "BBB" 10 . 0 1356 2009 "BBB" 10 . 0 1356 2010 "BBB" 10 . 1 1356 2011 "BBB" 10 . 0 1356 2012 "BBB" 10 . 0 1356 2013 "BBB" 10 . 1 1356 2014 "BBB" 10 . 0 1356 2015 "BBB" 10 . 1 1408 2002 "A" 3 . 0 1408 2003 "A" 3 . 0 1408 2004 "A" 3 . 0 1408 2005 "A" 3 . 0 1408 2006 "BBB" 10 . 0 1408 2007 "BBB" 10 . 1 1408 2008 "BBB" 10 . 0 1408 2009 "BBB" 10 . 0 1408 2010 "BBB" 10 . 0 1408 2011 "BBB" 10 . 1 1408 2012 "BBB" 10 . 1 1408 2013 "BBB" 10 . 0 1468 2002 "BBB" 10 . 0 1468 2003 "BBB" 10 . 1 1468 2004 "BBB" 10 . 1 1468 2005 "BBB" 10 . 0 1468 2006 "BBB" 10 . 0 1468 2007 "BBB" 10 . 0 1468 2008 "BBB" 10 . 0 1468 2009 "BB" 20 . 0 1468 2010 "BB" 20 . 0 1468 2011 "BB" 20 . 0 1468 2012 "BB" 20 . 0 1533 2002 "BB" 20 . 1 1533 2003 "BB" 20 . 1 1533 2004 "B" . . 0 1533 2005 "B" . . 0 1533 2006 "B" . . 0 1533 2007 "B" . . 0 1533 2008 "B" . . 0 1533 2009 "B" . . 0 1533 2010 "B" . . 0 end
g rating2 =.
replace rating2=1 if rating=="AAA"
replace rating2=2 if rating=="AA"
replace rating2=3 if rating=="A"
replace rating2=10 if rating=="BBB"
replace rating2=20 if rating=="BB"
* from AAA to BBB or AA to BBB or A to BBB
*rating2[_n] - rating2[_n-1] = 9 | rating2[_n] - rating2[_n-1] =8 | rating2[_n] - rating2[_n-1] = 7
* from AAA to BB or AA to BB or A to BB
*rating2[_n] - rating2[_n-1] = 19 | rating2[_n] - rating2[_n-1] = 18 | rating2[_n] - rating2[_n-1] = 17
So a rating changes to a speculative grade if the difference between the two is equal to the values above
Then,
g changerating = rating2[_n] - rating2[_n-1]
g changetospec = 0
replace changetospec = 1 if changerating == 7 | changerating == 8 | changerating == 9 | changerating == 17 | changerating == 18 |changerating == 19
I know the code is rather crazy, but I don't know how to achieve this in any other way and regardless, it seems to me it should give me what I am looking for. However, when I browse my data I see "changetospec" is assigned a 1 even if the rating goes from BBB at t=1 to BBB at t+1 (but "changerating" = 0 in those cases.)
Can someone help me with this?
0 Response to Indicator variable based on change in string variable
Post a Comment