[Stata][時系列データ][日時]Stataで時間を扱う
例えば2021/09/01をstataで認識させるには、
td(1sep2021)
で良い。こうすることで日付の大小比較ができる。また、
8Aug2021 19:00
などと時刻の情報があるときには、
dofc()
とすれば日付だけの情報になる。使い方としては、
gen newdate = dofc(var)
とした後で、
format newdate %td
とすれば良い。時刻の情報も含めて変数にする時は、
format var %tc
とする。
文字列のデータ
例えばdateという変数が
"2022/4/1"
という形式であるとすると、これをStataで時系列データと認識させるには、
gen date2 = date(date, "YMD")
format date2 %td
とすれば良い。”4/1/2022″ならば”YMD”を”MDY”にする。
より複雑な具体例について
以下のような時刻データがあるとする。
"2021/08/12 19:41:00:000"
"2021/08/10 15:05:00:000"
...
これをStataが読み込める時系列データにするときは、まず末尾の”:000″が邪魔なので、新しい変数を作る。
gen var_temp = ends(var), punct(":000")
こうすることで変数は
"2021/08/12 19:41:00"
"2021/08/10 15:05:00"
...
に変換され”var_temp”という名前の変数が生成される。この状態で、
gen var2 = clock(var_temp, "YMDhms")
format var2 %tc
とすれば無事時刻付きの日付情報になる。
日付と時刻が別れている場合
これはややトリッキー。ChatGPTに何回も聞いてやっとわかった。
日付がAという変数名で”15aug2021″という形式の値(ただし、%tdフォーマット)、時間がBという変数名で”15:15:00″という形式の値(ただし、%tcHH:MM:SSフォーマット)だとする。この場合、以下のようにして日付と時刻が合わさった変数Cを合成することができる。
gen double C = clock(string(A, "%td") + " " + string(B, "%tcHH:MM:SS", "DMYhms"))
format C %tc
今後使うことがあるかな・・・。
コメント