Statalist The Stata Listserver


[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

Re: st: RE: extract rows from panel dataset


From   "Tom Boonen" <tom.boonen.maiden@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: RE: extract rows from panel dataset
Date   Sun, 10 Sep 2006 18:02:24 -0400

Hi Scott,

I have one more question: I don't understand why the infile() command
works here.

Specifically in your programm the expression:

inlist(`tvar',`tx')

`tvar' is a local that contains the timevariable and tx is a list of
strings that contain the time numbers. In the help file it says that
infile will only work if all arguments must be reals or all must be
strings, which does not seem to be the case here.

Can you please explain. This would be a great help for me to
understand this potentialy powerfull command better.

Thanks!

Tom

On 9/10/06, Scott Merryman <smerryman@kc.rr.com> wrote:
I don't understand why you cannot use -if- restrictions and what timex,
timey, and timez represent; however, at least in the simpler example this
seems to accomplish the task:

program foo , rclase
  version 9.2
  syntax varlist(ts min=2 numeric) , Timex(numlist >=0 integer)
Units(numlist integer)
  qui tsset
  local tvar `r(timevar)'
  local pvar "`r(panelvar)'"
  local tx: subinstr local timex " " ",", all
  local u: subinstr local units " " ",", all
  tempvar yx foo
  gen `foo' = 1 if  inlist(`tvar',`tx') & inlist(`pvar', `u')
  qui mkmat `pvar' `tvar' `varlist' if `foo' == 1, matrix(`yx')
  matrix list `yx'
end


Which results in:

. webuse invest2,clear

. tsset com time
       panel variable:  company (strongly balanced)
        time variable:  time, 1 to 20

. foo invest market stock, timex(3 6 7 9) units(1 2 4)
(88 missing values generated)

__000000[12,5]
       company       time     invest     market      stock
 r1          1          3  410.60001  5387.1001  156.89999
 r2          1          6  461.20001  4643.8999      207.2
 r3          1          7        512  4551.2002      255.2
 r4          1          9  499.60001     4053.7  264.10001
 r5          2          3  66.260002  883.90002  34.700001
 r6          2          6  69.410004  727.79999  67.099998
 r7          2          7  68.349998  643.59998  75.199997
 r8          2          9  47.400002  588.40002  67.099998
 r9          4          3  35.049999        729  7.4000001
r10          4          6      28.57      628.5       26.5
r11          4          7  48.509998  537.09998  36.200001
r12          4          9      37.02  617.20001  84.400002

Scott


> -----Original Message-----
> From: owner-statalist@hsphsun2.harvard.edu [mailto:owner-
> statalist@hsphsun2.harvard.edu] On Behalf Of Tom Boonen
> Sent: Sunday, September 10, 2006 9:25 AM
> To: statalist@hsphsun2.harvard.edu
> Subject: st: extract rows from panel dataset
>
>
> Now my question: How can I extract from the varlist (i.e. the matrix
> YX) only those rows that the user specified in timex() and units().
>


*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/

*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/



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