## RE: st: creating unique identifier values

Noting Richard Williams' caveat, and just focusing on the question, it can also be done without loops:

set obs `=26 * 35' egen x2= seq(), to(35) egen x1= seq(), block(35) gen x = real(string(x1) + string(x2))

-egen- haters can do it without any interpreted code:

set obs `=26 * 35' gen x1 = ceil(_n/35) gen x2 = 1 + mod(_n-1, 35) gen x = real(string(x1) + string(x2))

and that could be telescoped further.

Nick n.j.cox@durham.ac.uk

Suzy > Thanks Austin! Austin Nichols

> >No idea why you would want to do it, but it's easy with -forval- > > > >clear > > set obs `=26*35' > > g x=. > > g a=. > > g i=. > > local n=1 > >forv i=1/26 { > > forv a=1/35 { > > qui replace x=`i'`a' in `n' > > qui replace i=`i' in `n' > > qui replace a=`a' in `n' > > local n=`n'+1 > > } > >}

Suzy

>>I am entering in some data manually and I would like to be able to > >>quickly insert unique numeric identifiers which represent > 26 individual > >>subjects each with 35 attributes. > >> > >> The values for the individual identifiers look like this: > >> > >> subject 1 with 1-35 attributes = > >>11,12,13,14,....110,111,112...120,121,122...130,131,132,133,134,135 > >> subject 2 with 1-35 attributes = > >>21,22,23,24,....210,211,212...220,221,222...230,231,232,233,234,235 > >> subject 3 with 1-35 attributes = > >>31,32,33,34.....310,311,312...320,321,322...330,331,332,333,334,335 > >> > >>etc. to subject 26 w/ 1-35 attributes...261,262,263 > >> > >>These values will be manually inputted in one column under > varname (obs) > >>in ascending order of subject number(s) and attribute number(s). > >> > >>obs > >>11 > >>12 > >>13 > >>14 > >>.etc > >>.etc > >>110 > >>111 > >>112 > >>.etc > >>.etc > >>.etc > >>21 > >>22 > >>23 > >>24 > >>25 > >>.etc > >>.etc > >>.etc > >>

* * For searches and help try: * http://www.stata.com/support/faqs/res/findit.html * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

Tag: