Stata使用第一行数据重命名变量

Stata Renaming Variables using first line data

我用insheet读取了CSV格式的数据。变量的名称应该是数据集的第一行。我有很多变量和多年的数据要读入,所以我想使用 foreach var 循环来执行此操作,如下所示:

   input str8 x str8 y str8 z
   first second third
   3 6 2
   4 1 2
   8 7 6
   end

   foreach var of varlist * {
     rename variable "`var'" "`=`var'[1]'"
   }

不幸的是,我收到了 syntax error 回复。

我假设问题一定出在我指定新名称的方式上。我是从这个问答中推断出来的:http://www.stata.com/statalist/archive/2011-09/msg01109.html

问题与 foreach 无关。您的 input 代码对我来说并不 运行 但这似乎是一个附带问题。

主要问题好像是

  1. rename 不包括语法 variable 除非它是一个变量名。

  2. rename 不使用双引号。

查看 rename 的帮助。

这行得通并且会继续。

clear 
input str8 x str8 y str8 z
"first" "second" "third"
"3" "6" "2"
"4" "1" "2"
"8" "7" "6"
end

foreach var of varlist * {
   rename `var' `=`var'[1]'
}
drop in 1 
destring, replace 
l 

     +------------------------+
     | first   second   third |
     |------------------------|
  1. |     3        6       2 |
  2. |     4        1       2 |
  3. |     8        7       6 |
     +------------------------+

但是,insheet 是一个过时的命令。

请参阅help importhttp://www.stata.com/manuals14/dimport.pdf以了解import delimited是要使用的内容并且它支持数据文件第一行的变量名称,因此none除非您只能访问旧版本的 Stata,否则应该需要其中的一部分。

(如果您使用的是旧版本,最好在任何支持 Stata 问题的论坛上明确说明。)

编辑:正如@Roberto Ferrer 指出的那样,insheet 也支持第一行的变量名。