在Stata中仅重命名变量中的子字符串

时间:2014-12-10 14:17:20

标签: stata

我在Stata中有一个变量列表,例如a_1_va_0100a_2_va_0100a_3_va_0100等。最大数量不固定(不会超过50)。变量中的数字将是连续的,但最大数量可能会因情况而异。

我需要将变量替换为a_1_q0100a_2_q0200a_3_q0300等。前4个字符将保持不变,其余字符将更改。我尝试过使用subinstr()

 replace a_1_va_0100 = subinstr( a_1_va_0100 , "va_0100", "q0100", .) 

我可以为每个变量循环替换语句吗?

2 个答案:

答案 0 :(得分:2)

你想要rename,而不是replace(我猜):

clear
set obs 1

gen a_1_va_0100 = 1
gen a_2_va_0100 = 2
gen a_3_va_0100 = 3

describe

forvalues i = 100(100)300 {
    rename a_`=`i'/100'_va_0100 a_`=`i'/100'_q0`i'
}

describe

可替换地:

forvalues i = 1/3 {
    rename a_`i'_va_0100 a_`i'_q0`=`i'*100'
}

我们使用replace更改特定变量所采用的值,而不是rename变量。有关详细信息,请参阅help <command>

或者您真的想要replace值吗?

答案 1 :(得分:1)

对于以“a _”开头的变量,这将在变量名中用“q”替换所有出现的“va_”:

renvars a_*, subst(va_ q)

您可以使用findit renvars找到此Stata Journal命令。