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: date("01jan1960", "DMY") does not seem to work with -if- qualifier of the command -tablist-
From
"Kieran McCaul" <[email protected]>
To
<[email protected]>
Subject
RE: st: date("01jan1960", "DMY") does not seem to work with -if- qualifier of the command -tablist-
Date
Tue, 22 Mar 2011 13:40:22 +0800
...
The old date function syntax used "dmy" not "DMY".
I think you'll find that the following works:
tablist bday name if statadate > date("01Jan1960", "dmy")
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Michael N.
Mitchell
Sent: Tuesday, 22 March 2011 9:47 AM
To: [email protected]
Subject: Re: st: date("01jan1960", "DMY") does not seem to work with
-if- qualifier of the command -tablist-
Dear Jeremy
This is a most curious issue! Eric provides an excellent solution,
but I was still
flummoxed why the behavior of the -if- condition should be different for
my -tablist-
command as compared to a command like -tabulate-. So, I investigated.
The heart of -tablist- is the -contract- command. The -if-
specification is passed from
-tablist- to -contract-, and then within the -contract- command it is
being implemented
via the -marksample- command. So I tested the -marksample- command using
your if condition.
. clear
. use http://www.stata-press.com/data/r10/datexmpl.dta
. gen statadate = date(bday, "DMY")
. format statadate %td
. local if statadate > date("01Jan1960", "DMY")
. marksample touse, strok novarlist
. list
+------------------------------------------------+
| name bday x statadate __000004 |
|------------------------------------------------|
1. | Bill 21 Jan 1952 22 21jan1952 0 |
2. | May 11 Jul 1948 18 11jul1948 0 |
3. | Sam 12 Nov 1960 25 12nov1960 1 |
4. | Kay 9 Aug 1975 16 09aug1975 1 |
+------------------------------------------------+
The temporary variable __000004 properly indicates that Sam and Kay were
born after
1/1/1960. But, if you look inside the source code of the -contract-
command using
-viewsource contract.ado-, you can see that it is running under version
control, using
-version 6.0-. So, let's try this again, but running the -marksample-
command under
version control.
. version 6.0, missing : marksample touse, strok novarlist
. list
+-----------------------------------------------------------+
| name bday x statadate __000004 __000005 |
|-----------------------------------------------------------|
1. | Bill 21 Jan 1952 22 21jan1952 0 0 |
2. | May 11 Jul 1948 18 11jul1948 0 0 |
3. | Sam 12 Nov 1960 25 12nov1960 1 0 |
4. | Kay 9 Aug 1975 16 09aug1975 1 0 |
+-----------------------------------------------------------+
The new variable created, -__000005-, believes that none of these
children were born after
1/1/1960.
Unfortunately, we cannot trace this any deeper because the
-marksample- command is a
built in command.
I think if the -marksample- command (within the -contract- command)
were issued using
version control to bring it to the current version, then I believe that
the behavior of
-contract- with the kind of -if- condition you used would then be
consistent across commands.
Best regards,
Michael N. Mitchell
Data Management Using Stata -
http://www.stata.com/bookstore/dmus.html
A Visual Guide to Stata Graphics -
http://www.stata.com/bookstore/vgsg.html
Stata tidbit of the week - http://www.MichaelNormanMitchell.com
On 2011-03-21 5:22 PM, Jeremy Page wrote:
> I am a frequent user of the user generated command -tablist- and I
> have run into a behavior that I can not explain. I am trying to use
> Stata's -date- command with the -if- qualifier to restrict
> observations from displaying in -tablist-. When I attempt to do this
> there appears to be a problem. I am able to use the -date- command to
> restrict observations with -tabulate- and I am able to restrict
> observations in -tablist- with a local variable being defined by the
> -date- command but not with -tablist-. It is my understanding that
> the -if- qualifiers across all programs should act the same. Am I
> missing something? I have included an example below using a Stata
> supplied data set.
>
> I am using version 1.2 of -tablist- which can be found at -findit
> tablist- and my version of Stata is 10.1 on a Windows XP machine.
>
> Thank you for your help.
>
> Best,
> Jeremy
>
>
>
> **********begin example***************
> clear
> use http://www.stata-press.com/data/r10/datexmpl.dta
>
>
> gen statadate = date(bday, "DMY")
>
> format statadate %td
>
> list statadate
>
> display date("01Jan1960", "DMY")
>
> ***it works with tabulate
> tab bday name if statadate> date("01Jan1960", "DMY")
>
>
> ***it works with a local variable
> local dte = date("01Jan1960", "DMY")
> tablist bday name if statadate> `dte'
>
> ***it does not work with tablist
> tablist bday name if statadate> date("01Jan1960", "DMY")
>
>
> ************end example***************
>
> *
> * For searches and help try:
> * http://www.stata.com/help.cgi?search
> * http://www.stata.com/support/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/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/statalist/faq
* http://www.ats.ucla.edu/stat/stata/