Stata 重命名一组变量和连接后缀时出现多个错误

Stata 重命名一组变量和连接后缀时出现多个错误,stata,Stata,我花了很多时间做一些应该很简单的事情。我试图改变一组变量,使其具有相同的名称,但末尾有不同的字母。我不了解数组是如何工作的或是其他什么:我的语法可能有多处错误,因为我对Stata非常不熟悉。我已经在谷歌上搜索了几个小时,但还是弄不明白,需要离开电脑一段时间 local letters `" "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"

我花了很多时间做一些应该很简单的事情。我试图改变一组变量,使其具有相同的名称,但末尾有不同的字母。我不了解数组是如何工作的或是其他什么:我的语法可能有多处错误,因为我对Stata非常不熟悉。我已经在谷歌上搜索了几个小时,但还是弄不明白,需要离开电脑一段时间

local letters `" "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" "'
local i 1
local swap " "

foreach var of varlist q5_a-q5_o {
    local letter : word `i' of `letters' //select the 1st value in the array which is 'a'
    replace `swap' = "aspects" + "_" + `letter' //change swap to read 'aspects_a' 
    rename `var' `swap' //rename 'q5_a' to 'aspects_a'
    local `i' = `i' + 1 //add one to 'i' so that the next loop will change 'q5_b' to 'aspects_b'
}

尝试组重命名:重命名q5*特性*。如果这不是您想要的,请给出一些当前变量名及其所需新名称的示例。

正如@Dimitry V.Masterov指出的,Stata 12 up中的重命名可以进行多次重命名

的确

renpfix q5 aspect
似乎是你想要的

这个答案的其余部分集中在您的方法的错误之处。你第一次打电话的时候

replace `swap' = 
本地宏交换只是空间,所以Stata看到了

replace = 
这是违法的。但是在这里使用replace的想法是错误的。这根本不是如何更改本地宏。简而言之,您将replace误读为一种操作字符串的方法。这是一种改变变量内容的方法

local letters `c(alpha)' 
local i = 1

foreach var of varlist q5_a-q5_o {
    local letter : word `i' of `letters' 
    rename `var' aspects_`letter' 
    local i = `i' + 1 
}
应该有用。在这里,我们利用了一个事实,即小写字母a到z已经在calpha中:请参见creturn列表输出的末尾,了解其他有用的位和段。这可以缩短:

local letters `c(alpha)' 
local i = 1

foreach var of varlist q5_a-q5_o {
    local letter : word `i++' of `letters' 
    rename `var' aspects_`letter' 
}
更简短的是:

local i = 1

foreach var of varlist q5_a-q5_o {
    local letter : word `i++' of `c(alpha)' 
    rename `var' aspects_`letter' 
}
而且更短

foreach letter in `c(alpha)' { 
     rename q5_`letter' aspect_`letter' 
} 

尽管如前所述,这是renpfix以任何方式为您所做的

一般评论:谷歌搜索可能非常间接。您想要重命名变量。您所需要的一切都在Stata帮助中或附近。谷歌在这里搜索就像走到图书馆去浏览,而你想要的是你已经拥有的一本书。我明白你的意思。我有其他几种编程语言的经验,但是我在C++中找到解决方法显然不能适用于StATA。我想我需要找一些时间来阅读Stata帮助,这里的语法已经足够不同了,在我开始的时候弄清楚它是浪费时间和令人沮丧的伟大!非常感谢,我正在为一个班级的研究项目学习Stata,我知道必须有一个比每次重命名每个变量更简单的方法。你的答案很好,我也可以用它来重命名很多其他变量,非常感谢!