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: bysort, forvalues and _N
From
Nick Cox <[email protected]>
To
[email protected]
Subject
Re: st: bysort, forvalues and _N
Date
Fri, 25 Jan 2013 20:10:56 +0000
I wouldn't approach it like that. I don't think a loop is required,
but rather a different data structure. Also, holding Duration may be
interesting and useful, but it is just awkward for this problem.
First save the dataset if not already -save-d. Then
gen long obsno = _n
gen endDate = startDate + Duration
expand 2
bysort obsno : gen Date = cond(_n == 1, startDate, endDate)
bysort obsno : gen inOut = cond(_n == 1, 1, -1)
bysort PersonID (Date) : gen noActivities = sum(inOut)
Compare e.g. thread starting at
http://www.stata.com/statalist/archive/2012-11/msg01163.html
Nick
On Fri, Jan 25, 2013 at 7:38 PM, Constantin Alba
<[email protected]> wrote:
> I have a dataset organized by personID, for each personID there are
> startDate and Duration for various activities.
>
> I want to find out how many activities a person performs at the same
> time (e.g. something like workload)
>
> logically i see it like this:
>
> sort personID startDate Duration
>
> by personID: forvalues i=1/`=_N' {
> "compare current date with all
> other prior dates+duration
> and update counter accordingly"
> }
>
> however, by and forvalues do not work together, so i am trying to find
> an alternative way to do so.
*
* 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/