首先观察变量名称

时间:2018-10-03 15:28:19

标签: loops variables foreach rename stata

我目前有一个包含37个变量的数据集。我用import excel读了数据,但是变量名应该是什么,这是第一次观察。

我想使用循环将第一个观察值移至变量名称。

这是我尝试过的:

foreach var of varlist * {
rename `A' `=`District'[1]'
}

第一个变量的名称应为区,但应将其作为第一个观测值。

我得到的错误是:

syntax error
    Syntax is
        rename  oldname    newname   [, renumber[(#)] addnumber[(#)] sort ...]
        rename (oldnames) (newnames) [, renumber[(#)] addnumber[(#)] sort ...]
        rename  oldnames              , {upper|lower|proper}

但是我不确定如何解决。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

@Pearly Spencer的评论是最好的解决方案。只要正确执行import

同时,让我们修复循环:

您有

foreach var of varlist * {
    rename `A' `=`District'[1]'
}

此处(显然)未定义本地宏ADistrict。即使已定义它们,最多此循环也将通过相同或另一个变量的第一个值来rename一个变量。循环将第二次失败,因为变量已经rename d。

我想您要达到的目标更像是

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

后跟

drop in 1 
destring, replace 

如果rename可行。

修改后的循环是

的Stata代码
!!! not Stata 
for each variable { 
    use the value in the first observation as the new name 
}

请注意,我们假设第一个观察结果是一组不同且合法的Stata变量名称。对于在Stata之外准备的数据文件,这通常是一个强有力的假设。

此代码对于有问题的名称更健壮:

foreach var of varlist * {
    rename `var' `=strtoname(`var'[1])'

}

有关更多信息,请参见help strtoname()

如果这不是答案,则需要提供一个数据示例。