我想根据"$S_DATE"
宏中存储的年份生成一个具有滞后年份的变量。我将年份存储在名为date
的宏中:
. local date substr("$S_DATE",8,.)
. display `date'
2015
我想用
生成新的变量gen start_year =`date'- y_passed
其中y_passed
是一个包含1 ~ 10的整数的变量。
. gen start_year = `date' - y_passed
type mismatch
r(109);
我知道会发生这种情况,因为存储的宏是字符串。
如何将存储在本地宏中的值从字符串更改为数字?
如果添加=
,则Stata将计算定义本地date
的表达式:
clear
set more off
set obs 10
gen y_passed = _n
local date = substr("$S_DATE",8,.)
display `date'
gen start_year = `date' - y_passed
list
否则,局部变量只保存一个字符串,而不是字符串类型的数字!看到
. local date substr("$S_DATE",8,.)
. display `"`date'"'
substr("14 May 2015",8,.)
混乱是因为display
将为您评估。实际上,
display `date'
扩大到
display substr("14 May 2015",8,.)
,后者的结果是
2015