Rename Stata:重命名所有不以x开头的变量
我想为所有不以x开头的变量添加前缀或后缀:Rename Stata:重命名所有不以x开头的变量,rename,stata,Rename,Stata,我想为所有不以x开头的变量添加前缀或后缀: clear input xa xb c d 1 1 1 1 end 我的想法是这样的:重命名(!x)*y*应该会得到这样的结果:xaxbycyd。 谢谢你的提示。这在我心目中并不理想,但在我脑海中,也许像renpfix这样的东西对你有用: . clear . input xa xb c d xa xb c d 1. 1 1 1 1 2. end . list
clear
input xa xb c d
1 1 1 1
end
我的想法是这样的:重命名(!x)*y*
应该会得到这样的结果:xaxbycyd
。
谢谢你的提示。这在我心目中并不理想,但在我脑海中,也许像
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
。这在我看来并不理想,但在我的脑海中,也许像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
。可以避免foreach
循环,非常感谢。我喜欢第一个。它简单而聪明。非常感谢。我喜欢第一个。它很简单,也很聪明。我想这应该在ds x*之后运行,而不是在ds x*之后运行,对吗?但是我不断得到一个无效的名称r(198)
错误。有什么想法吗?(顺便说一句,我用的是Stata 11。)rename
的使用仅限于Stata 12。啊。。。那我就倒霉了。在你最后一次评论之后,我最接近于使用renvars(`r(varlist)')、前缀(y)
而不是我的循环。帮助文件中的同一个Nick Cox?renvars
部分是我的工作。还有ds
和findname
renvars
(比如findname
)必须首先安装。我假设这是在ds x*之后运行的,而不是,对吗?但是我不断得到一个无效的名称r(198)
错误。有什么想法吗?(顺便说一句,我用的是Stata 11。)rename
的使用仅限于Stata 12。啊。。。那我就倒霉了。在你最后一次评论之后,我最接近于使用renvars(`r(varlist)')、前缀(y)
而不是我的循环。帮助文件中的同一个Nick Cox?renvars
部分是我的工作。还有ds
和findname
<必须首先安装code>renvars
(如findname
)。
. rename (`r(varlist)') (y=)