我想为所有不以x:
开头的变量添加前缀或后缀clear
input xa xb c d
1 1 1 1
end
我认为这样的事情:rename (!x)* y*
应该给出这样的结果:xa xb yc yd
。
谢谢你的提示。
答案 0 :(得分:2)
可以避免foreach
循环
. rename (`r(varlist)') (y=)
答案 1 :(得分:1)
这在我看来并不理想,但在我的脑海中,或许像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
或findname
(使用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
。