如何将存储在本地宏中的值从字符串更改为数字?
How can I change the value stored in local macro from string to numeric?
我想根据存储在 "$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只是一个字符串,而不是字符串类型的数字!参见
. local date substr("$S_DATE",8,.)
. display `"`date'"'
substr("14 May 2015",8,.)
混淆是因为 display
会为您评估。实际上,
display `date'
扩展到
display substr("14 May 2015",8,.)
后者导致
2015
我想根据存储在 "$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只是一个字符串,而不是字符串类型的数字!参见
. local date substr("$S_DATE",8,.)
. display `"`date'"'
substr("14 May 2015",8,.)
混淆是因为 display
会为您评估。实际上,
display `date'
扩展到
display substr("14 May 2015",8,.)
后者导致
2015