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

时间:2016-02-07 22:17:41

标签: foreach rename stata

我使用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回复。

我假设问题必须与我指定新名称的方式相同。我从这个Q& A:http://www.stata.com/statalist/archive/2011-09/msg01109.html

推断出来

1 个答案:

答案 0 :(得分:2)

问题与foreach无关。您的input代码并没有为我竞争,但这似乎是个问题。

主要问题似乎是

  1. rename不包含语法variable,除非它是变量名称。

  2. rename不使用双引号。

  3. 请参阅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是使用什么,并且它支持数据文件第一行的变量名称,因此不需要这些,除非您只能访问较旧版本的Stata。

    (如果您使用的是旧版本,在任何支持Stata问题的论坛中明确说明这一点总是一个好主意。)

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