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

仅重命名Stata中变量中的子字符串,stata,Stata,我在Stata中有一个变量列表,如a_1_va_0100,a_2_va_0100,a_3_va_0100,等等。最大值不是固定的(不会超过50)。变量中的数字是连续的,但最大数字在不同情况下可能会有所不同 我需要将变量替换为a_1_q0100,a_2_q0200,a_3_q0300,等等。前4个字符将保持原样,其余字符将更改。我试过使用subinstr() 我可以为每个变量循环replace语句吗?您想重命名,而不是替换(我猜): 或者: forvalues i = 1/3 { rena

我在Stata中有一个变量列表,如
a_1_va_0100
a_2_va_0100
a_3_va_0100
,等等。最大值不是固定的(不会超过50)。变量中的数字是连续的,但最大数字在不同情况下可能会有所不同

我需要将变量替换为
a_1_q0100
a_2_q0200
a_3_q0300
,等等。前4个字符将保持原样,其余字符将更改。我试过使用
subinstr()


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

您想
重命名
,而不是
替换
(我猜):

或者:

forvalues i = 1/3 {
    rename a_`i'_va_0100 a_`i'_q0`=`i'*100'
}
我们使用
replace
来更改特定变量的值,而不是
rename
变量。有关详细信息,请参阅
帮助


或者您真的想
替换
值吗?

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

renvars a_*和subst(va_q)


使用
findit renvars

定位此Stata Journal命令后,可以安装此命令。必须清楚变量名称及其值之间的差异。否则不可能进行编程。请注意,您仍有待处理的反馈。至少对你提出的问题给予明显的反馈是必要的。这只是OP承诺解决这个问题的一个标志。在这之前,这个问题对任何人都没有任何用处。请注意,您需要先从Stata Journal网站下载
renvars
。我的意思是替换,而不是重命名。我会改变原来的帖子。另一种解决办法对我有效。非常感谢。
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'
}