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]

st: RE: RE: RE: RE: RE: RE: RE: RE: summarize conditions within subjects in panel data


From   "Hoffman, George" <[email protected]>
To   "[email protected]" <[email protected]>
Subject   st: RE: RE: RE: RE: RE: RE: RE: RE: summarize conditions within subjects in panel data
Date   Mon, 29 Nov 2010 15:43:02 -0600

Thanks again.
If only -by, and -bysort, could take a reverse modifier (like gsort id -hour)


-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Nick Cox
Sent: Monday, November 29, 2010 1:00 PM
To: '[email protected]'
Subject: st: RE: RE: RE: RE: RE: RE: RE: summarize conditions within subjects in panel data

You could package this, but at root Stata needs to look at _all_ the values for a panel before it can decide that _all_ are missing. Hence I think there isn't a one-line solution, except trivially if you write a program to do it. 

Nick 
[email protected] 


-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Nick Cox
Sent: 29 November 2010 18:50
To: '[email protected]'
Subject: st: RE: RE: RE: RE: RE: RE: summarize conditions within subjects in panel data

This came up in a different form a few days ago. See my post on 24 Nov

<http://www.hsph.harvard.edu/cgi-bin/lwgate/STATALIST/archives/statalist.1011/date/article-968.html> 

bysort id (hour) : gen mysum = sum(varx < 50)
bysort id (varx) : replace mysum = . if missing(varx[1]) & missing(varx[_N]) 

Nick 
[email protected] 

Hoffman, George

Not quite.
The problem is with missing values.
bysort id (hour) : gen mysum = sum(varx < 50)
 the function sum(varx<50) reports 0 if varx is missing. 
But - if varx is missing for the entirety of the hours in a given id, I'd like mysum = sum(varx<50) to be missing.
If I add if varx<. To the end of the bysort... command, then the sum is missing if the varx is missing in the last hour.

This is a generic issue that I've been thinking  wrongly about for years, and need correction!

Hoffman, George

This works. Thanks!

Nick Cox

bysort id (hour) : gen mysum = sum(varx < 50) 

Hoffman, George

id: integers 1,2....200
hour: integers 1,2...48
varx : continuous, 0-100 and missing

Nick Cox

We need to know more about how -hour- is defined and measured. Is it a time since some zero, or a duration? Show a segment of your data for one subject. 

Hoffman, George

I've got a panel dataset (xt) uniquely identified by subject (id)  and time (hour), sorted by id hour.
I'd like to generate a variable that counts the cumulative (within id, across hour) number of hours that a variable is less than 50.
My code so far:

gen varxl50 = varx <50 if varx <.
bysort patnum (hour): gen varxl50sum = sum(varxl50)

I'm running into problems because of missing values I think.
Does this code look right?
Is there a mode succinct way to code this?

*
*   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/


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