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 at the end of May, and its replacement, statalist.org is already up and running.


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

Re: st: forvalues


From   Nick Cox <njcoxstata@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: forvalues
Date   Tue, 23 Oct 2012 14:11:38 +0100

dimpol7 asked what he or she is doing wrong.

First off, as already pointed out to dimpol7, we ask for full real
names on Statalist. See my posting replying to dimpol7 on 12 October.

Second off,

forvalues i = 1/53 {
        tabstat age if single=='i', by(sexcat) stats(mean sd n min max
median p10 p25 p75 p90)
}

will fail if there are _any_ value of -single- in 1/53 for which there
are no observations. Stata is disagreeing with you on that, but all my
money is on Stata being right and you being wrong here.

I suggest that you try

di "`i'"
capture noisily tabstat age if single=='i', by(sexcat) stats(mean sd n
min max median p10 p25 p75 p90

A line displaying which value this is going to be needed to
distinguish the tables. -capture noisily- will proceed past any
errors.

Nick


On Tue, Oct 23, 2012 at 1:14 PM, - <dimpol7@googlemail.com> wrote:
> It still won't do it, it says "no observations", but there are
> observations there...
>
> On 23 October 2012 13:09, Henrik Støvring <STOVRING@biostat.au.dk> wrote:
>> Your accents are off. You need to replace 'i' with `i' - note the
>> difference in the first accent.
>>
>> Best,
>>
>> Henrik
>>
>> On 10/23/2012 02:04 PM, - wrote:
>>> hello all,
>>> I'm trying to build a simple loop, and have looked at Help for
>>> "foreach" and "forvalues", but can't get it to work. I just want to
>>> set a variable i to take consecutive values from 1 to 53, so use
>>> forvalues i=1/53, then give its value to a variable in my data called
>>> "single" (refers to the number of samples for each person) which has
>>> integer values ranging from 1 to 53, and create tables of statistics
>>> for age in men and women. So there would be 53 tables of ages, one for
>>> each number of samples, summarized by sex.
>>> Haven't use loops in stata before, I write:
>>>
>>> forvalues i = 1/53 {
>>>    2. tabstat age if(single=='i'), by(sexcat) stats(mean sd n min max
>>> median p10 p25 p75 p90)
>>>    3. }
>>>
>>> but the message is that 'i' is an invalid name. If I use
>>> if(single==i), it says "i not found". Can anyone tell me what I'm
>>> doing wrong?

*
*   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/


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