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