我目前有一个包含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}
但是我不确定如何解决。
有什么想法吗?
答案 0 :(得分:1)
@Pearly Spencer的评论是最好的解决方案。只要正确执行import
!
同时,让我们修复循环:
您有
foreach var of varlist * {
rename `A' `=`District'[1]'
}
此处(显然)未定义本地宏A
和District
。即使已定义它们,最多此循环也将通过相同或另一个变量的第一个值来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()
。
如果这不是答案,则需要提供一个数据示例。