Notice: On March 31, it was **announced** that Statalist is moving from an email list to a **forum**. The old list will shut down on April 23, and its replacement, **statalist.org** is already up and running.

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

From |
"Martin Weiss" <martin.weiss1@gmx.de> |

To |
<statalist@hsphsun2.harvard.edu> |

Subject |
st: AW: recode 9, 99, 999,..., into missing |

Date |
Sun, 16 May 2010 17:10:23 +0200 |

<> Not sure whether this is totally foolproof, try it yourself :-) -mod()- just has to part of the solution, I think: ************* clear* inp byte(var1 var2) int(var3 var4) 1 1 1 1 2 2 2 2 3 3 3 3 4 8 99 999 5 9 100 1000 6 10 101 1001 7 11 150 5000 9 12 999 9999 end foreach var of varlist *{ sum `var', mean local notanswered = cond((mod(r(max),9)==0),r(max),.) if !mi(`notanswered') replace `var'=. if `var'==`notanswered' } list, noo ************* HTH Martin -----Ursprüngliche Nachricht----- Von: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] Im Auftrag von Amanda Fu Gesendet: Sonntag, 16. Mai 2010 16:57 An: statalist@hsphsun2.harvard.edu Betreff: st: recode 9, 99, 999,..., into missing Hi all, I have seen a couple of times that for some data sets the "not answered" is coded as 9, 99, 999...... and the number of digit of 9 depends on the number of digit of the maximum value of the variable. It is convenient to analyze if recoding them into missing. But the problem is, for some variables, 9 or 99 might be the real values. I was wondering if there is any good way to deal with this kind of recoding. (In the past we have a discussion thread of using the value label information such as "not answered" to deal with this question. What I am asking here is what if there are no such value labels ?) For example, here are three variables : var1 takes values: {1,2,3,4,9} where 9 means "not answered" var2 takes values: {1,2,3,......8,9,10,11,12,99} where 99 means " "not answered" var3 takes values: {1,2,3,...99,100,101,..,150,999} where 999 means " "not answered" var4 takes values: {1,2,3,...999,1000,1001,..5000,9999} where 9999 means " "not answered" Now I am thinking to recode int he following way: foreach var of varlist * { sum `var' replace `var'=. if r(max)<9 & `var'==9 replace `var'=. if r(max)<99 & r(max)>9 & `var'==99 replace `var'=. if r(max)<999 & r(max)>99 & `var'==999 replace `var'=. if r(max)<9999 & r(max)>999 & `var'==9999 } I would like to hear if anyone has better method instead of this. Thanks for your time! Best wishes, Amanda * * 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/

**Follow-Ups**:**st: RE: AW: recode 9, 99, 999,..., into missing***From:*"Lachenbruch, Peter" <Peter.Lachenbruch@oregonstate.edu>

**References**:**st: recode 9, 99, 999,..., into missing***From:*Amanda Fu <mandy.fu1@gmail.com>

- Prev by Date:
**RE: [Fwd: Re: st: sgmediation and panel data]** - Next by Date:
**st: RE: AW: recode 9, 99, 999,..., into missing** - Previous by thread:
**st: recode 9, 99, 999,..., into missing** - Next by thread:
**st: RE: AW: recode 9, 99, 999,..., into missing** - Index(es):