0

"$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);

保存されたマクロが文字列であるため、これが発生することはわかっています。

ローカル マクロに格納されている値を文字列から数値に変更するにはどうすればよいですか?

4

1 に答える 1

2

を追加する=と、Stata は local を定義する式を評価します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
于 2015-05-14T19:43:54.493 に答える