[stata]時間の扱い

person wearing silver aluminum case apple watch with white sport band stata
Photo by cottonbro on Pexels.com

[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

今後使うことがあるかな・・・。

関連リンク

変数の確認方法(one/twoway-tabulate)
tabstatの使い方、カテゴリーごとの要約量について

https://www.stata.com/manuals13/u24.pdf

コメント

タイトルとURLをコピーしました