【问题标题】:Stata: Replace and rename variable after encode commandStata:在编码命令后替换和重命名变量
【发布时间】:2014-03-29 21:39:56
【问题描述】:

在对一组变量x1-xn 使用encode 命令后,我想替换并保留原始变量名称。这是我开始的地方:

for var x*: encode x*, generate(x*_) label(label)

我的问题是:删除x*(原始字符串)变量的干净方法是什么?

当我弄清楚这一点后,我可以对rename x*_(新的编码变量)执行此命令:

rename x*_ x*

【问题讨论】:

  • 那有什么问题呢?
  • 请添加有关您的问题的更多信息。
  • for 没有记录在任何最新版本的 Stata 中。我目前无法访问 Stata 6 的文档,这些文档需要回答如何使用 for 进行操作,但如果您使用的是 Stata 7 或更高版本,您应该切换到 foreach。如果您使用的是早期版本,您应该说出它是什么。如果你展示的是伪代码,你应该已经解释过了。不管真相是什么,这个问题都没有得到充分的解释。我记得你的for 声明离合法还有很长的路要走。
  • @NickCox 感谢您的意见!我正在使用 Stata 12,但我不确定你所说的伪代码是什么意思。我在问题中发布的命令是我在 Stata 12 中实际使用的命令。我的计量经济学教授在这个版本中使用了 for 命令并且它有效,所以我没有意识到它不合适。您能否澄清伪代码和合法 cmets 的含义?
  • 伪代码是没有任何特定语言的代码。我并没有说使用for 不合适;我说它没有记录,所以你完全依赖于从以前的成功使用中记住的一些代码。显然您还没有尝试为for 寻找帮助,因为您会发现它不存在。正如我所说,我记得你的代码是不合法的,意思是由于语法错误而无法工作。

标签: stata


【解决方案1】:

也许你的意思是:

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

翻译成简单的英文(虽然代码很简单)是:对于每个以 ma​​ke 开头的变量,encode 它生成一个新变量,然后drop 旧变量和@987654324 @ 新的 一。 使用本地宏。详情请参阅help foreachhelp macro

【讨论】:

  • destring var, replace 怎么样?
  • destring 当且仅当相关变量的内容是数字,但碰巧作为字符串变量导入时才适用。 OP 没有表明这一点,但它可能是真的。
  • 对不起,我没有说清楚。字符串变量的内容不是数字。否则,是的,destring 命令会优雅地做到这一点。
猜你喜欢
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
  • 2023-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
相关资源
最近更新 更多