日 (195 ~ 720 の番号) のリストがあり、各日に複数の観測があります。最終的には、これらの日のうちどれが平日で、どれが週末かを判断したいと思います。各日に1〜7の数字を割り当てることができれば、これを行うことができます。現在、データは次のようになっています。
Day Household ID Hour of Day
195 1 1
195 1 2
195 1 3
195 1 4
196 1 1
196 1 2
196 1 3
197 1 1
197 1 2
おそらく、各日に一貫した数の観測値がないことに注意することが重要です(たとえば、195日目に4回の観測、196日目に3回の観測、197日目に2回の観測)。
195日目は火曜日であることを知っています。簡単にするために、「2」(水曜日= 3、木曜日= 4など)に等しいものとしてコーディングしたいと思います。
したがって、次の出力を取得したいと思います。
Day Household ID Hour of Day DAY OF WEEK
195 1 1 2
195 1 2 2
195 1 3 2
195 1 4 2
196 1 1 3
196 1 2 3
196 1 3 3
197 1 1 4
197 1 2 4
Stataのドキュメントを調べた後、DYM / DMYの使用を検討しました。ただし、元の「日付」変数がないため、これは機能しません。代わりに、7月12日火曜日に対応する番号「195」があります。
私は次のようなものを使いたかった:
bysort day: egen Hour_of_Day = seq(2, 3, 4, 5, 6, 7, 1)
ただし、Stataによると、これには構文エラーがあります。注:最初の日(195)は火曜日なので、「2」から始めます。carryforward
またはmod(x,y)
またはのようなコマンドも検討しましたfill
。
毎日同じようにシーケンスを設定する方法を知っている人はいますか?このコードを修正して、目的の出力を実現するにはどうすればよいですか?
195が火曜日であることがわかっている場合、リバースエンジニアリングは簡単です。193は日曜日、199は土曜日だったに違いありません。
その週の193から199のサンドボックスを見てみましょう。私たち自身の曜日関数での最初の推測では、mod()
関数(コマンドではありません)を使用します。このペーパーは、Stataでのアプリケーションに関する短いリフです。
. clear
. set obs 7
number of observations (_N) was 0, now 7
. gen day = 192 + _n
. gen dow = mod(day, 7)
. list, sep(0)
+-----------+
| day dow |
|-----------|
1. | 193 4 |
2. | 194 5 |
3. | 195 6 |
4. | 196 0 |
5. | 197 1 |
6. | 198 2 |
7. | 199 3 |
+-----------+
曜日に関するStataの規則では、0は日曜日、6は土曜日です。それはただの回転です。
. gen DOW = mod(day + 3, 7)
. list, sep(0)
+-----------------+
| day dow DOW |
|-----------------|
1. | 193 4 0 |
2. | 194 5 1 |
3. | 195 6 2 |
4. | 196 0 3 |
5. | 197 1 4 |
6. | 198 2 5 |
7. | 199 3 6 |
+-----------------+
上記dow()
を取得する別の方法は、Stata独自の関数で確認できます。DOW
gen StataDOW = dow(day - 2)
したがって、平日の指標は(たとえば)
gen weekday = !inlist(DOW, 0, 6)
または
gen weekday = inrange(DOW, 1, 5)
または
gen weekday = !inlist(dow, 4, 3)
作成された最初の変数を使用します。
たまたま、私はもともとを書いたegen, seq()
。あなたの構文はseq()
、構文と同様に実際には合法ではありませんが、括弧内には何も配置されていません。私はegen
ここでは使用しません。なぜなら、(あなたが持っているように)複数のオカレンスで正しい答えが本質的に不可能であり、データにギャップがある場合もありそうもないからです。ここでの推論は、繰り返しやギャップに対してロバストであるか、ロバストである必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加