我找不到在Stata中定义需要两个月时间的时间变量的方法。我在其他论坛中发现了一种定义3个月(一个季度)的间隔或将其定义为一个学期的方法,但这并不是我想要的。
我有一个这样的数据集
year month observation
2000 1 40
2000 2 10
2000 3 50
2000 4 10
我创建了一个变量bi_month
,
year month bi_month observation
2000 1 1 40
2000 2 1 10
2000 3 2 50
2000 4 2 10
但是在这里,我无法使用以下代码或tsset
命令(因为它没有定义每两个月一次的数据的命令)
gen mdate = ym(year, bi_month)
format mdate %tm
因为Stata读取bi_month
表示从1到12的月份。
答案 0 :(得分:2)
在我看来,每两个月(或每两个月一次)这个术语似乎并不透明。我建议每月两次和每月两次进行两种解释。
看来,这里的主要问题是希望将月度数据汇总为两个月数据,特别是间隔时间为1月2月,...,11月至12月。为此,我建议在每个月的第一个月代表两个月的期间。
clear
input year month whatever
2000 1 40
2000 2 10
2000 3 50
2000 4 10
end
gen mdate = ym(year, month)
gen m2date = 2 * floor(mdate/2)
format m*date %tm
list
+-------------------------------------------+
| year month whatever mdate m2date |
|-------------------------------------------|
1. | 2000 1 40 2000m1 2000m1 |
2. | 2000 2 10 2000m2 2000m1 |
3. | 2000 3 50 2000m3 2000m3 |
4. | 2000 4 10 2000m4 2000m3 |
+-------------------------------------------+
现在使用新的两个月日期不能再tsset
或xtset
使用此类数据,因为每个这样的日期在数据集中都不是唯一的。
但是假设您减少了数据集,以使每个两个月的日期仅出现一次(或者每个面板最多一次)。现在tsset
或xtset
触手可及,而所需的扭曲只是设置delta(2)
。
collapse whatever, by(year m2date)
tsset m2date, delta(2)
list
+--------------------------+
| year m2date whatever |
|--------------------------|
1. | 2000 2000m1 25 |
2. | 2000 2000m3 30 |
+--------------------------+
用每个月的第二个月来表示每个两个月的周期是同样系统的。只需在上面m2date
的配方中添加1。
注意:严格xtset
仅需要一个面板标识符,而不是每个面板最多坚持一次。我不确定这是否有用,但这是另一回事了。