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]

Re: st: Count the number of changing string values


From   Nick Cox <[email protected]>
To   "[email protected]" <[email protected]>
Subject   Re: st: Count the number of changing string values
Date   Fri, 14 Jun 2013 13:02:31 +0100

As before, I advise a -reshape- of the data. When you tell us what
your data look like after a -reshape-, I will advise.

But I decline, indeed refuse, to offer code for your present data structure.

1. It's not in your best interests. As these little problems get more
complicated, how are you going to cope? The first problem you posed
was easy for an experienced programmer, but too difficult for you.
That's just a fact, not a reproach, but you really don't want to get
into a situation in which you are incapable of tackling even basic
problems without asking for help. A long data structure really is
better for you.

2. The problem you pose looks soluble but not amusing to me so I stop
too for that reason.

This is just me, one person. Nothing stops anybody else offering code.
They may be writing it even now. Equally, nothing commits me to
solving all your problems.


Nick
[email protected]

On 14 June 2013 12:49, Ching Wong <[email protected]> wrote:
> Sorry, Nick.
> I ask again.
>
> I would to identify "the first year in which a user said Yes after
> previously saying No".
>
>
> Because I only concern the FIRST one.
>
>
> Ching
>
> On 14 June 2013 21:15, Ching Wong <[email protected]> wrote:
>> Hi Nick,
>>
>> I would like to count "how many times a user said Yes one year and No the next".
>>
>> Thanks.
>>
>> Ching
>>
>> On 14 June 2013 21:11, Nick Cox <[email protected]> wrote:
>>> I take this to be a new question, but I am unclear what you want. Do you want
>>>
>>> 1. Counting how many times a user said Yes one year and No the next?
>>>
>>> 2. Identifying the first year in which a user said Yes after
>>> previously saying No.
>>>
>>> I fall back on emphasising my previous advice
>>>
>>> Long structure ... is likely to be better for you for most analyses.
>>>
>>> Get these data -reshape-d. You are going to want to do lots of
>>> analyses on different kinds of patterns, and keeping this structure is
>>> really going to strain any user's Stata fluency.
>>>
>>> Nick
>>> [email protected]
>>>
>>>
>>> On 14 June 2013 12:12, Ching Wong <[email protected]> wrote:
>>>> Thanks Nick
>>>>
>>>> Yes, it's all good if I only need to count the first "NO'.
>>>>
>>>> But I would rather to see how to count the first "YES & NO" between
>>>> year of study.
>>>>
>>>> id Drug2009   Drug 2000
>>>> 1    Yes              NO      ------->ONE count
>>>>
>>>> Regards,
>>>>
>>>> Ching
>>>>
>>>> On 14 June 2013 20:24, Nick Cox <[email protected]> wrote:
>>>>> I can't see your value labels from here. But suppose that "No" is a
>>>>> label for value 1.
>>>>>
>>>>> replace year = `j' if  Drug`j' == 1 & missing(year)
>>>>>
>>>>> I trust that you will be able to modify that to your situation.
>>>>>
>>>>>
>>>>> Nick
>>>>> [email protected]
>>>>>
>>>>>
>>>>> On 14 June 2013 11:45, Ching Wong <[email protected]> wrote:
>>>>>> Hi Nick,
>>>>>>
>>>>>> So what if -drug*- are numeric variables with value labels, how should
>>>>>> I change my Command?
>>>>>>
>>>>>>
>>>>>> Thanks!
>>>>>>
>>>>>>
>>>>>> Ching
>>>>>>
>>>>>> On 14 June 2013 19:19, Nick Cox <[email protected]> wrote:
>>>>>>> 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
>>>>>>>
>>>>>>> So,
>>>>>>>
>>>>>>> 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.
>>>>>>>
>>>>>>> Nick
>>>>>>> [email protected]
>>>>>>>
>>>>>>>
>>>>>>> On 14 June 2013 10:20, Ching Wong <[email protected]> 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:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/


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