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]

From |
Matthew White <mwhite@poverty-action.org> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: Populating variables based upon integer value in the observation |

Date |
Tue, 24 Jul 2012 11:28:52 -0400 |

Hello, I think you just need to tweak your code. Replace the -if- command with the -if- qualifier. From: forvalues x = 1/10 { gen yr`x' = 0 if `x'<= a { replace yr`x' = b } } To: forvalues x = 1/10 { gen yr`x' = 0 replace yr`x' = b if `x' <= a } For more on the difference between the -if- command and -if- qualifier and why the -if- command took -a- to mean -a[1]-, see: <http://www.stata.com/support/faqs/programming/if-command-versus-if-qualifier>. Another option is -cond()-: forvalues x = 1/10 { gen yr`x' = cond(`x' <= a, b, 0) } Best, Matt On Tue, Jul 24, 2012 at 6:24 AM, Mathew Wilkins <MWilkins@unfccc.int> wrote: > > Dear Stata listers, > I am wondering if it is possible to populate a certain number of variables > based upon san integer variable in the observation. I am still relatively > new to stata and would relatively easily be able to program this in Access > or Excel. > > > I have variables a, b and yr1-yr10 (all integer) > > > I would like some commands that will populate variable b into variables > yr1-yr10, the number of the variables yr1-yr10 that are populated is based > upon variable a. The below example dataset show an example of what I would > like to populate > > obs | a | b | yr | yr2 | yr | yr4 | yr5 | yr6 | yr7 | yr8 | yr | yr1 > | | | 1 | | 3 | | | | | | 9 | 0 > ------+-----+------+-----+------+-----+-------+------+------+------+------+-----+------ > 1 | 4 | 25 | 25 | 25 | 25 | 25 | 0 | 0 | 0 | 0 | 0 | 0 > ------+-----+------+-----+------+-----+-------+------+------+------+------+-----+------ > 2 | 10 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 > ------+-----+------+-----+------+-----+-------+------+------+------+------+-----+------ > 3 | 7 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 0 | 0 | 0 > ------+-----+------+-----+------+-----+-------+------+------+------+------+-----+------ > 4 | 1 | 14 | 14 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 > ------+-----+------+-----+------+-----+-------+------+------+------+------+-----+------ > 5 | 9 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 0 > ------+-----+------+-----+------+-----+-------+------+------+------+------+-----+------ > 6 | 8 | 79 | 79 | 79 | 79 | 79 | 79 | 79 | 79 | 79 | 0 | 0 > > > > > > > > > > I have managed to use a forvalues loop to create the variables yr1-yr10 and > another loop to then populate them. > > > forvalues x = 1/10 { > gen yr`x' = 0 > if `x'<= a { > replace yr`x' = b > } > } > > However the yr columns that are being populated are only based on variable > a in the first observation (result set below). > > a b yr1 yr2 yr3 yr4 yr5 yr6 yr7 yr8 yr9 yr10 > 4 25 25 25 25 25 0 0 0 0 0 0 > 10 3 3 3 3 3 0 0 0 0 0 0 > 7 19 19 19 19 19 0 0 0 0 0 0 > 1 14 14 14 14 14 0 0 0 0 0 0 > 9 5 5 5 5 5 0 0 0 0 0 0 > 8 79 79 79 79 79 0 0 0 0 0 0 > > I have tried to use an additional forvalues loop for the observation > however this either does not work or take too long to process (the full > scale dataset I am working on is approximately 11,000 observations and the > yr columns go from 1 – 30. > > Many thanks in advance for your time and consideration. > > Regards > Mathew Wilkins > United Nations Climate Change Secretariat (UNFCCC) > > Mathew Wilkins > Statistical Assistant > Strategy & Policy Development > > (Embedded image moved to file: pic02220.gif) > > United Nations > Climate Change Secretariat > Martin-Luther-King Strasse 8 > 53175 Bonn, Germany > > Phone +49 228 815 1864 > Fax +49 228 815 1999 > mwilkins@unfccc.int > unfccc.int -- Matthew White Project Associate Innovations for Poverty Action 101 Whitney Avenue, New Haven, CT 06510 USA +1 434-305-9861 www.poverty-action.org * * 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/

**References**:**st: Populating variables based upon integer value in the observation***From:*Mathew Wilkins <MWilkins@unfccc.int>

- Prev by Date:
**Re: st: xtunitroot** - Next by Date:
**Re: st: tabulate 'hazard ratios' and 'p values' after Cox analysis** - Previous by thread:
**st: RE: Populating variables based upon integer value in the observation** - Next by thread:
**Re: st: Populating variables based upon integer value in the observation** - Index(es):