Statalist


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

Re: st: Recode non-integers to positive integers


From   Frank Gallo <[email protected]>
To   [email protected]
Subject   Re: st: Recode non-integers to positive integers
Date   Sat, 22 Aug 2009 11:24:58 -0400

Hi All,

So the syntax "egen newvar = group(oldvar)" achieves my goal for one variable. But for another variable, I have "0" values that I want to keep and do not include in the grouping. I tried adding the if qualifier [egen newvar = group(oldvar) if oldvar > 0] but this transformed the 0s to missing. I would greatly appreciate any suggestions. Thank you.

Best,
Frank


On Aug 22, 2009, at 9:56 AM, Frank Gallo wrote:

Hi Mike & Jon,

Thank you for your time and input. I solved my problem with the following syntax: egen newvar = group(oldvar). This syntax produced a new variable, which grouped similar values and ordered them from lowest (1) to highest (28). I used the tabulate command to check the recoding, which was correct. I apologize if I were not clearer with my original post: I am a beginner with Stata. Thank you.

Best,
Frank

On Aug 22, 2009, at 2:02 AM, Mike Wazowski wrote:

here's a step-by-step code you could modify, assume x is your original variable....

clear
set obs 500
set seed 123
gen x = round(10*runiform()+10,.5)
gen x2 = -x
sort x2
by x2: gen rank=1 if _n==_N
drop x2
sort x
replace rank = sum(rank)

mike




--- On Sat, 8/22/09, Frank Gallo <[email protected]> wrote:

From: Frank Gallo <[email protected]>
Subject: Re: st: Recode non-integers to positive integers
To: [email protected]
Date: Saturday, August 22, 2009, 2:33 AM
Hi Jon,

Thank you very much for your input.. However, the syntax
generates new variable values greater than 28. The 28 unique
values occur many times. What I would like to accomplish,
for example, is that each time the value 2.87 occurs the new
variable value would be 1, and so on for the other unique
values. I apologize if I was not clear in my previous post.
Thank you.

Best,
Frank


On Aug 21, 2009, at 9:25 PM, John Ataguba wrote:

Hi Frank,

There are many possible options.

Try

egen newvar=rank(oldvar), unique

This should work.  Note that the oldvar is the
variable containing 2.87 to 6.04.  The newvar is a new
variable you may specify differently to the oldvar.

I hope this helps.

Regards

Jon
________________________________
From: Frank Gallo <[email protected]>
To: [email protected]
Sent: Friday, 21 August, 2009 18:15:45
Subject: st: Recode non-integers to positive integers

Hi All,

I have a variable that has 28 unique non-integer values,
which range from 2.87 to 6.04. I would like to recode the
values to positive integers from 1 to 28 respectively. Is
there a simpler way instead of "recode old var
(2.87=1)....(6.04=28), generate(new var)" to accomplish
this? Thank you.

Best,
Frank


*
*   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–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index