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

时间:2015-05-14 19:23:02

标签: types global stata local stata-macros

我想生成一个滞后年份的变量,具体取决于"$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);

我知道这是因为存储的宏是一个字符串。

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

1 个答案:

答案 0 :(得分:2)

如果您添加=,那么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