Statalist The Stata Listserver

[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

Re: st: RE: generating new vars from old by cutting off a portion off the old

From   "Michael S. Hanson" <>
Subject   Re: st: RE: generating new vars from old by cutting off a portion off the old
Date   Mon, 14 May 2007 10:03:21 -0400

Actually, given the proposed solution it appears that the worry is not specifically "about 8", but whether the "State" code (a) always begins with the 4th character, and (b) always is just 2 characters long. Depending on the universe of potential values of "oldvar", there may exist applications of -assert- that can check these desired conditions. However, notice that the currently proposed application of -substr- should work as intended on values such as "CITNA34", "CITNA034", and "CITNA0340", but will fail on "CINA134" and the like.

Hope this helps.

-- Mike

On May 14, 2007, at 4:05 AM, Nick Cox wrote:

Nevertheless, your description "about 8" is worrying.
In any observations that have some other number
of characters, this solution may be incorrect. Try

. assert length(oldvar) == 8


That worked beautifully, thank you.  Just saved me five hours
of banging
my head against the wall.


gen str State = substr(oldvar,4,2)

This assumes that your original variable was string.

I have a variable that has about 8 characters per observation and I need to take 2 characters (4th and 5th characters) and generate them as new variables representing state codes. So for example, the variable has as one of its value CITNA134. The characters I need to extract are NA, which will be recoded as State code. How would I go about doing this?
*   For searches and help try:

© Copyright 1996–2017 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index