Bookmark and Share

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]

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


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/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index