Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: Count the number of changing string values

From   Nick Cox <>
To   "" <>
Subject   Re: st: Count the number of changing string values
Date   Fri, 14 Jun 2013 10:49:50 +0100

Code that "doesn't work" but is not shown can not be commented on.
Long structure (I prefer to avoid the word "format" here) is not
essential for the problem as I understand it, but it is likely to be
better for you for most analyses.

The year in which people first said "No" is

gen year = .

qui forval j = 1999/2012 {
        replace year = `j' if  Drug`j' == "No" & missing(year)

tab year


1. Everybody starts out with missing.

2. If they said "No" in 1999, -year- is changed to 1999

3. If they said "No" in 2000, -year- is changed to 2000, but only if
-year- is missing (so values of 1999 are protected)

and so on.

You didn't explain your datatypes. If -drug*- are numeric variables
with value labels, the syntax will differ accordingly.


On 14 June 2013 10:20, Ching Wong <> wrote:

> I have the following data set:
> Id     sex   drug1999   drug2000    drug2001      drug 2001
> 1       F       Yes            No          Yes            Unknown
> 3       M       No           Yes          Yes             No
> 5      F         Yes          Yes          Yes            Yes
> 9      M       Unknown    Yes          No             Yes
> 10     F        Yes           No           Yes             No
> I would like to produce a count of to show the number of people who
> quit each year, only count the first time they quit and do not care if
> they change their status to ‘No’ again.
> What would be the command? I tried to change it to the long formal and
> use the lag function, but it doesn’t work.

*   For searches and help try:

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