  # st: RE: splitting variables

 From "Nick Cox" To Subject st: RE: splitting variables Date Tue, 23 Nov 2004 13:56:35 -0000

```Appropriate answers depend on whether these variables
are string or numeric. I'll guess string.

You can loop over possible lengths with -forval-:
let's have an example in which the lengths range
from 4 to 40:

forval l = 4(2)40 {

Now we need to find which variables are of each
length:

ds <varlist>, has(type `l')

If we find some such variables, we need to process them:

if "`r(varlist)'" != "" {

Now we need to cycle over those variables:

foreach v of var `r(varlist)' {

Now we need to cycle over the pairs of digits

local j = `l'/2
forval i = 1/`j' {
gen `v'_`i' = substr(`v',2 * `i' - 1,2)
}
}
}

Here it is again:

forval l = 4(2)40 {
ds <varlist>, has(type `l')
if "`r(varlist)'" != "" {
foreach v of var `r(varlist)' {
local j = `l'/2
forval i = 1/`j' {
gen `v'_`i' = substr(`v',2 * `i' - 1,2)
}
}
}
}

You need to

1. replace 4(2)40

3. check that the new names will be OK.

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

Jean Bouyer

> I would like to split a variable into several ones, but there are no
> separators. Thus I don't think I can use the split Stata command.
> I only know that variable must be split every two digits. For
> instance 123456 must be split into 12 34 and 56.
> My problem is that I have to do that for about hundred variables and
> that the number of digits is not the same for all the variables
> (although it is always even).
>

*
*   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/
```