Stata:在encode命令后替换并重命名变量
在对一组变量Stata:在encode命令后替换并重命名变量,stata,Stata,在对一组变量x1 xn使用encode命令后,我希望替换并保留原始变量名。这就是我的出发点: for var x*: encode x*, generate(x*_) label(label) 我的问题是:删除x*(原始字符串)变量的干净方法是什么 当我明白这一点时,我可以执行这个命令来重命名x*(新的编码变量): 也许你的意思是: clear all set more off * example database sysuse auto keep make clonevar make2
x1 xn
使用encode
命令后,我希望替换并保留原始变量名。这就是我的出发点:
for var x*: encode x*, generate(x*_) label(label)
我的问题是:删除x*
(原始字符串)变量的干净方法是什么
当我明白这一点时,我可以执行这个命令来重命名x*(新的编码变量):
也许你的意思是:
clear all
set more off
* example database
sysuse auto
keep make
clonevar make2 = make
describe
list in 1/5, nolabel
* what you want
foreach v of varlist make* {
encode `v', gen(new`v')
drop `v'
rename new`v' `v'
}
describe
list in 1/5, nolabel
翻译成通俗易懂的英语(尽管代码很简单),这是:对于以make开头的每个变量,encode
生成一个新变量,然后删除旧变量并重命名新变量
一个。使用本地宏。有关详细信息,请参见help foreach
和help macro
。那么问题是什么?请添加有关问题的更多信息。
的在任何最新版本的Stata中都没有记录。我目前无法访问Stata 6的文档,这些文档是回答如何使用for
执行此操作所需的,但如果您使用的是Stata 7或更高版本,则应切换到foreach
。如果您使用的是早期版本,您应该说明它是什么。如果你在展示伪代码,你应该解释一下。不管真相是什么,这个问题没有得到充分的解释。我记得你的for
声明离法律还有很长的路要走。@NickCox谢谢你的意见!我使用的是Stata 12,但我不确定你所说的伪代码是什么意思。我在问题中发布的命令是我在Stata 12中实际使用的命令。我的计量经济学教授在这个版本中使用了
for
命令,它起了作用,所以我没有意识到这是不合适的。你能澄清一下你所说的伪代码和法律评论是什么意思吗?伪代码是没有任何特定语言的代码。我没有说使用for
不合适;我说它没有文档记录,所以您完全依赖于从以前的成功使用中记住的一些代码。显然,您没有尝试为查找的帮助,因为您会发现它不存在。正如我所说的,我记得你的代码是不合法的,因为语法错误,意思就不起作用了。那么析构函数var,replace
?析构函数
是合适的,当且仅当相关变量的内容是数字的,而恰好是作为字符串变量导入时。OP并没有指出这一点,但可能是真的。对不起,我没说清楚。字符串变量的内容不是数字。否则,是的,destring
命令将优雅地完成这项工作。
clear all
set more off
* example database
sysuse auto
keep make
clonevar make2 = make
describe
list in 1/5, nolabel
* what you want
foreach v of varlist make* {
encode `v', gen(new`v')
drop `v'
rename new`v' `v'
}
describe
list in 1/5, nolabel