我想为所有不以 x 开头的变量添加前缀或后缀:
clear
input xa xb c d
1 1 1 1
end
我想是这样的:rename (!x)* y*
应该给出这样的结果:xa xb yc yd
。感谢您的任何提示。
可以避免foreach
循环
. rename (`r(varlist)') (y=)
这在我看来并不理想,但在我的脑海中,也许类似的东西renpfix
可能对你有用:
. clear
. input xa xb c d
xa xb c d
1. 1 1 1 1
2. end
. list
+-----------------+
| xa xb c d |
|-----------------|
1. | 1 1 1 1 |
+-----------------+
. renpfix "" y
. renpfix yx x
. list
+-------------------+
| xa xb yc yd |
|-------------------|
1. | 1 1 1 1 |
+-------------------+
在这里,我首先为所有变量添加了前缀,因此前两个变量的前缀为yx
; 然后我替换了yx
前缀以返回x
前两个变量。
另一种选择是使用ds
or findname
(install using search findname
) 并使用not
参数来否定匹配的变量
. clear
. input xa xb c d
xa xb c d
1. 1 1 1 1
2. end
. list
+-----------------+
| xa xb c d |
|-----------------|
1. | 1 1 1 1 |
+-----------------+
. ds x*, not
c d
. foreach v in `r(varlist)' {
2. rename `v' y`v'
3. }
. list
+-------------------+
| xa xb yc yd |
|-------------------|
1. | 1 1 1 1 |
+-------------------+
ds
并将findname
其结果存储在 中`r(varlist)'
,以便您foreach
在识别相关变量后使用。