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 |
Nick Cox <njcoxstata@gmail.com> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: generate variable versus define scalar, with conditional statement |

Date |
Tue, 15 Jan 2013 13:45:55 +0000 |

I doubt that you need to loop, but I am completely in the dark over what it is that you want to do. Nick On Tue, Jan 15, 2013 at 1:42 PM, annoporci <annoporci@gmail.com> wrote: > I read the J.Wernow faq, but couldn't quite see how to rewrite the code. > > Do I need to loop over every single date in the dataset? > > Until my brain clicks, I'm just going to generate variables instead of > scalars. > > gen newvariable = open if date == mdy(1,3,2001) > > With tens of thousands of observations, it seemed like a serious waste of > resources to generate a variable to store the one useful scalar, but after 3 > hours on this I'm in damage-limitation mode. > > thanks Nick, > > Patrick. > > --- > > Patrick Toche. > > > > > On Tue, 15 Jan 2013 21:06:12 +0800, Nick Cox <njcoxstata@gmail.com> wrote: > >> In addition >> >> . help scalar >> >> gives the syntax you can use, and it's a fair principle to assume that >> what is not permitted is forbidden. That is, -scalar- definitions >> don't explicitly allow -if- or for that matter -in-. >> >> Nick >> >> On Tue, Jan 15, 2013 at 1:02 PM, Nick Cox <njcoxstata@gmail.com> wrote: >>> >>> What's intuitive is usually just what is familiar through experience >>> (although that is contentious within (?) 20% of the history of >>> psychology and 80% of the history of epistemology). >>> >>> Stata has an -if- command and an -if- qualifier and one distinction >>> between them is in where they are used, not in what they look like at >>> first glance. >>> >>> What comes first logically in either case? >>> >>> If something is true, you want a scalar calculated. >>> >>> You want a variable -generate-d using a specified rule but only -if- >>> something is true in each observation. >>> >>> The trouble is that I think that way and explain it that way because I >>> have internalised Stata's syntax. >>> >>> All that said, >>> >>> 1. I'd assert that the form you found puzzling is a common form in >>> many programming languages. It is the -if- qualifier that is >>> idiosyncratic. However, Stata learners are most likely to meet the >>> -if- qualifier first. >>> >>> 2. >>> >>> if date == mdy(1,2,2001) scalar newscalar = open >>> >>> still looks most unlikely to be what you really want _unless_ -date- >>> is also a scalar. >>> >>> To see why, see >>> >>> FAQ . . . . . . . . . . . . . . . . . . . . . if command vs. if >>> qualifier >>> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . J. >>> Wernow >>> 6/00 I have an if command in my program that only seems >>> to evaluate the first observation, what's going on? >>> >>> http://www.stata.com/support/faqs/programming/if-command-versus-if-qualifier/ >>> >>> Nick >>> >>> On Tue, Jan 15, 2013 at 12:38 PM, annoporci <annoporci@gmail.com> wrote: >>> >>>> I learned something today I'd like to share with Statalist. >>>> >>>> The way to conditionally define a variable and a scalar are different. >>>> An >>>> example is given below. >>>> >>>> clear all >>>> sysuse sp500 >>>> >>>> /// generate a new variable with missing entries except at the given >>>> date >>>> mdy(1,2,2001): >>>> gen newvariable = open if date == mdy(1,2,2001) >>>> >>>> /// define a new scalar by the value of variable open at the given date >>>> mdy(1,2,2001): >>>> if date == mdy(1,2,2001) scalar newscalar = open >>>> scalar list >>>> >>>> /// THIS IS NOT THE WAY: >>>> scalar newscalar = open if date == mdy(1,2,2001) >>>> >>>> The above, incorrect way, is intuitive for a beginner (like myself), it >>>> is >>>> similar to the syntax to generate new variables, but it won't work. >>>> >>>> This is trivial for 99% of Statalist users, but may be a useful tip for >>>> the remaining 1%. And if not, almost surely for a future incarnation of >>>> myself scanning through Statalist for hints when the following error >>>> message displays: >>>> >>>> if not allowed >>>> >>>> When I submitted *stata scalar "if not allowed"* Google returned a >>>> solution, >>>> in a more complicated setting: >>>> >>>> >>>> http://statalist.1588530.n2.nabble.com/scalar-do-not-allow-if-td5748129.html * * 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/

**Follow-Ups**:**Re: st: generate variable versus define scalar, with conditional statement***From:*annoporci <annoporci@gmail.com>

**References**:**st: generate variable versus define scalar, with conditional statement***From:*annoporci <annoporci@gmail.com>

**Re: st: generate variable versus define scalar, with conditional statement***From:*Nick Cox <njcoxstata@gmail.com>

**Re: st: generate variable versus define scalar, with conditional statement***From:*Nick Cox <njcoxstata@gmail.com>

**Re: st: generate variable versus define scalar, with conditional statement***From:*annoporci <annoporci@gmail.com>

- Prev by Date:
**Re: st: generate variable versus define scalar, with conditional statement** - Next by Date:
**Re: st: generate variable versus define scalar, with conditional statement** - Previous by thread:
**Re: st: generate variable versus define scalar, with conditional statement** - Next by thread:
**Re: st: generate variable versus define scalar, with conditional statement** - Index(es):