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: Removing variables if missing a particular observation


From   Nick Cox <njcoxstata@gmail.com>
To   "statalist@hsphsun2.harvard.edu" <statalist@hsphsun2.harvard.edu>
Subject   Re: st: Removing variables if missing a particular observation
Date   Thu, 11 Apr 2013 16:15:06 +0100

First problem:

You are confusing -drop-ping of variables and -drop-ping of
observations. Forgetting about your loop, the generic statement

drop `var' if missing(`var') in 1

is illegal, as you can't simultaneously -drop- variables and
observations. (Saying that it is "not working" is an odd description,
unless you mean that your code produces an error message.)

The loop that you want is (for example)

foreach var of varlist _all {
       su `var' if date == ym(2004,3), meanonly
       if r(min) == . drop `var'
}

Second problem: Note first that _all is not pertinent here. At most it
is a way of designating all variable names concisely, but you want all
distinct values of a variable.

More positively, this is an FAQ.

FAQ     . . . . . . . . . . Making foreach go through all values of a variable
        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  N. J. Cox
        8/05    Is there a way to tell Stata to try all values of a
                particular variable in a foreach statement without
                specifying them?
http://www.stata.com/support/faqs/data-management/try-all-values-with-foreach/

Nick
njcoxstata@gmail.com


On 11 April 2013 15:57, Nick Baker <nb419@cam.ac.uk> wrote:

> I have a sample of mutual fund returns data and I wish to analyse only those
> funds with returns over a particular time period. Currently my data is of
> the format:
>
> Date     fundret1   fundret3   fundret4
> 2004m3          .        2.2       3.15
> 2004m4          .        3.1       -1.5 2004m5        2.3          .
> 2.1
> 2004m6        1.1          .        1.8
>
>
> I have two problems. I want to delete all variables that have a missing
> value for 2004m3. At the moment I am trying the following:
>
> foreach var of varlist _all {
>
> drop `var' if missing(`var') in 1
> }
>
> since 2004m3 is the first observation, but this is not working.
>
> A second problem is that I wish to loop over all funds. They are numbered
> from 1 to 4722 but due to some prior deletions the sequence of funds does
> not include every value. I do not want to use _all because the dataset will
> include variables other than fund returns eventually. Any ideas if it
> possible to create a loop in such circumstances?
>
*
*   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