Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

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

From |
Jeph Herrin <stata@spandrel.net> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: Loop to replace values of a variable |

Date |
Wed, 18 Dec 2013 14:00:27 -0500 |

Good point. So sort n replace x=x[1] + _n*.1 will do. On 12/18/2013 11:22 AM, Nick Cox wrote:

In principle, yes. In practice, this means repeated addition of 0.1; but 0.1 is a good example of a decimal that looks simple but can't be held exactly as a binary. Do something like this set obs 100 gen y1 = 0 replace y1 = y[_n-1] + 0.1 in 2/L gen y2 = (_n-1)/10 edit y? to convince yourself that the second method gives a better approximation than the first. More discussion at SJ-10-1 pr0051 . . . . . . . . . . . . Stata tip 85: Looping over nonintegers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N. J. Cox Q1/10 SJ 10(1):160--163 (no commands) tip on using forvalues to loop over numbers http://www.stata-journal.com/sjpdf.html?articlenum=pr0051 Nick njcoxstata@gmail.com On 18 December 2013 14:34, Jeph Herrin <stata@spandrel.net> wrote:A solution that doesn't require knowing the value of x[1] in advance: sort x replace x=x[_n-1]+0.1 if _n>1 hth, Jeph On 12/18/2013 9:04 AM, emanuele mazzini wrote:Yes, the way Marteen suggested worked greatly. Thank you!! 2013/12/18 Fabrizio Colella - 1348010 <colella.fabrizio@studbocconi.it>:you generated x as Marteen suggested, now you just have to subtract: gen x = _n*.1 gen y = -2.6+x Fabrizio ----- Messaggio originale ----- Da: "Nick Cox" <njcoxstata@gmail.com> A: statalist@hsphsun2.harvard.edu Sent: Mercoledì, 18 dicembre 2013 14:49:34 Oggetto: Re: st: Loop to replace values of a variable For -2.5(0.1)2.1 or -2.5(0.1)2.5, you can still divide integers by 10. No loop needed as _n always gives you integers in sequence. Nick njcoxstata@gmail.com On 18 December 2013 13:44, emanuele mazzini <madsoenistata@gmail.com> wrote:Oh, yes, I see. Thank you very much for your answers, but I may have oversimplified, since what you said would fit in this case, as x is exactly = _n/10, but my problem is slightly more complex. What if the values I want to replace go from -2.5 to 2.15, still with a 0.1 interval? In this case I'd still need a loop, right? 2013/12/18 Maarten Buis <maartenlbuis@gmail.com>:no need to loop: gen x = _n*.1 Hope this helps, Maarten On Wed, Dec 18, 2013 at 2:33 PM, emanuele mazzini <madsoenistata@gmail.com> wrote:Dear all statalist users, I would like to program a (relatively) simple loop to replace the values of a variable I created, but I cannot figure it out how to write the syntax. The structure of my data is very simple: I have 300 observations and a variable, say x, that in the first cell (i.e. for n=1) is equal to 0.1, while it is missing for all other 299 cells. Data look like: n x 1 0.1 2 . 3 . 4 . . . . . . 299 . 300 . I would like the loop to replace the missing values of my variable by going from cell 2 to cell 300, and to have a replace that would be at a 0.1 intervals, so as to obtain data that look like: n x 1 0.1 2 0.2 3 0.3 4 0.4 . . . . . 299 29.9 300 30 I can obviously do it by hand, but a loop would be naturally much more efficient! Does anyone know how to make it?* * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/faqs/resources/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/faqs/resources/statalist-faq/ * http://www.ats.ucla.edu/stat/stata/

**References**:**Re: st: Loop to replace values of a variable***From:*Nick Cox <njcoxstata@gmail.com>

**Re: st: Loop to replace values of a variable***From:*Fabrizio Colella - 1348010 <colella.fabrizio@studbocconi.it>

**Re: st: Loop to replace values of a variable***From:*emanuele mazzini <madsoenistata@gmail.com>

**Re: st: Loop to replace values of a variable***From:*Jeph Herrin <stata@spandrel.net>

**Re: st: Loop to replace values of a variable***From:*Nick Cox <njcoxstata@gmail.com>

- Prev by Date:
**Re: st: nested loop with string values** - Next by Date:
**st: RE: match variable across two tables** - Previous by thread:
**Re: st: Loop to replace values of a variable** - Next by thread:
**RE: st: Loop to replace values of a variable** - Index(es):