Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, statalist.org is already up and running.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: fill or expand data


From   nicostat@gmail.com
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: fill or expand data
Date   Sat, 16 Oct 2010 10:11:46 +0200

thanks
catia

2010/10/12 Nick Cox <n.j.cox@durham.ac.uk>:
> Eric gave an excellent precise example formulation. This code is in his spirit but omits a loop over observations and any restructuring of the data other than -expand- in place.
>
> clear
> inp id  str14(yearenter   yearexit)    yearcont
> 1  "10/80"             "2/81"           81
> 1  "3/81"                "4/81"          81
> 1 "11/85"             "2/87"          87
> end
>
> foreach x of var yeare* {
>        g `x'2 = date(`x', "M19Y")
>        g `x'3 = year(`x'2)
>        format `x'2 %tdMon_CCYY
> }
>
> l
> gen nexpand = yearexit3 - yearenter3 + 1
> expand nexpand
> drop nexpand
> bysort id yearenter yearexit : replace yearcont = yearenter3[1] + _n - 1
> l
>
> Nick
> n.j.cox@durham.ac.uk
>
> Eric Booth
>
> Be sure to show us what you've tried.   I don't think -tsfill- can be used to get the target dataset you describe.
>
> Here's one way to get your target dataset:
>
> ***********************!
> //input your dataset//
> clear
> inp id  str14(yearenter   yearexit)    yearcont
> 1  "10/80"             "2/81"           81
> 1  "3/81"                "4/81"          81
> 1 "11/85"             "2/87"          87
> end
>
> //first, put your dates into a format stata understands//
> ds yeare*
> foreach x in `r(varlist)' {
> g `x'2 = date(`x', "M19Y")
> format `x'2 %tdMon_CCYY
> }
>
>
> //create range of years and reshape//
> g range = ""
> forval n = 1/`=_N' {
>        local start = year(yearenter2) in `n'
>        local stop = year(yearexit2) in `n'
>        di "`start' to `stop'"
>        numlist "`start'(1)`stop'"
>        replace range = "`r(numlist)'" in `n'
>        }
> split range, p(" ")
> drop range yearenter yearexit
> g i = _n
> reshape long range, i(i) j(obs)
> drop i
> drop if mi(range)
> l
>
> On Oct 12, 2010, at 12:16 PM, <nicostat@gmail.com>
>
>> My question is about to display or fill my data set. I have tried the
>> command tsfill but I don't know how  continue to arrive at my final
>> data set.
>> I have  this data:
>> id  year enter   year exit    yearcont
>> 1  10/80             2/81           81
>> 1  3/81                4/81          81
>> 1 11/85             2/87          87
>>
>> And I want to have this one
>>
>> id  year enter   year exit    yearcont
>> 1  10/80               3/81           80
>> 1   10/80              3/81            81
>> 1   3/81               4/81             81
>> 1   11/85             2/87             85
>> 1    11/85            2/87            86
>> 1  11/85             2/87              87
>
>
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/statalist/faq
> *   http://www.ats.ucla.edu/stat/stata/
>

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index