如何将存储在本地宏中的值从字符串更改为数字?



我想根据"$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

相关内容

  • 没有找到相关文章

最新更新