Loops 重编码年循环

Loops 重编码年循环,loops,stata,stata-macros,Loops,Stata,Stata Macros,我想使用for a循环重新编码名为Year的变量,并在Stata中创建名为Year的新变量 我要寻找的应该是缩短以下提到的代码: recode Year (5 = 1960) (6 = 1961)(7 = 1962)(8 = 1963)(9 = 1964) (10 = 1965) /// (11 = 1966) (12 = 1967) (13 = 1968) (14 = 1969) (15 = 1970) (16 = 1971) /// (17 = 1972) (18 = 1973) (19 =

我想使用for a循环重新编码名为Year的变量,并在Stata中创建名为Year的新变量

我要寻找的应该是缩短以下提到的代码:

recode Year (5 = 1960) (6 = 1961)(7 = 1962)(8 = 1963)(9 = 1964) (10 = 1965) ///
(11 = 1966) (12 = 1967) (13 = 1968) (14 = 1969) (15 = 1970) (16 = 1971) ///
(17 = 1972) (18 = 1973) (19 = 1974) (20 = 1975) (21 = 1976) (22 = 1977) ///
, gen(year)
for循环不会缩短代码,没有其他方法可以更简洁地编写代码

然而,以下几点对我来说很有用:

local counter1 = 4
local counter2 = 59

forvalues i = 1 / 18 {
    local counter1 = `counter1' + 1
    local counter2 = `counter2' + 1
    local foo `foo' (`counter1' = 19`counter2')
}

recode Year `foo', generate(year)
编辑:

正如@NickCox指出的,我同意您可以执行以下操作,而不是循环:

generate year = Year + 1955

??? 新变量只是旧变量+1955。生成年份=年份+1955年!!!当然,但不指出一个更简单的解决方案是一种伤害,就像几个小时前在Statalist上发生在我身上的相反的事情一样。当有一个更简单的解决方案时,从循环的角度思考不是一个好主意。