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]

# Re: st: creating new id variable

 From Nick Cox To statalist@hsphsun2.harvard.edu Subject Re: st: creating new id variable Date Tue, 28 Aug 2012 08:58:44 +0100

If the two variables are string, this could be

gen newid = cond(length(id1) == 1, "0" + id1, id1) + cond(length(id2)
== 1, "0" + id2, id2)

If the two variables are numeric, this could be

gen newid = cond(id1 < 10, "0" + string(id1), string(id1)) + cond(id2
< 10, "0" + id2, id2)

although

gen newid = 100 * id1 + id2

might well prove adequate.

Either way,

egen newid = group(id1 id2), label

is a good solution, as William signals. Note, however, that the use
within -egen- of the -concat()- function (not subcommand) does not
depend on the arguments being strings, as is documented.

See also

SJ-7-4  dm0034  . . . Stata tip 52: Generating composite categorical variables
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  N. J. Cox
Q4/07   SJ 7(4):582--583                                 (no commands)
tip on how to generate categorical variables using
tostring and egen, group()

which is accessible to all at

http://www.stata-journal.com/article.html?article=dm0034

Nick

On Tue, Aug 28, 2012 at 3:43 AM, William Buchanan
<william@williambuchanan.net> wrote:

> I would also recommend looking at the -egen- command.  If the id variables are stored as strings you can use the -concat- subcommand to join them together, and if they are stored as numbers you can use the -group- subcommand to create a new variable based on the values of the two variables.  Either way, you should definitely read more of the documentation and the resources available online.

> On Aug 27, 2012, at 19:08, A Muhyidin <cakalie.a@gmail.com> wrote:
>
>> Dear Statalisters,
>>
>> I am trying to make a new id based on the two previous id, but so far
>> without any luck.
>> The new id that I'd like to make should be 4 digits, 2 digits from id1
>> and and 2 digits from id2.
>> If id2 consists of 1 digit number, I would like to add zero before the
>> last number to make new_id as 4 digits.
>> Any help would be appreciated.
>>
>>
>> |        id1   id2|     new_id
>>     |------------|
>>  1. |   11     1 |   1101
>>  2. |   11     5 |   1105
>>  3. |   11     8 |   1108
>>  4. |   11     9 |   1109
>>  5. |   11    10 |   1110
>>     |------------|
>>  6. |   11    14 |   1114
>>  7. |   11    15 |   1115
>>  8. |   11    16 |   1116
>>  9. |   11    17 |   1117
>> 10. |   11    18 |   1118
>>     +------------+
>>

*
*   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–2015 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index