Date 创建一个;句号;Stata中日期变量的变量
我有带id和日期的面板数据(不平衡)来确定两个维度。ID是1-449之间的整数。日期为2004年第一季度至2012年第四季度的季度。是否可以创建一个以日期向量为条件的新变量t 例如: 2004Q1=>1 2004Q2=>2 等等 对于一个平衡的面板来说,这是没有问题的,但是我如何才能使它成为一个不平衡的面板呢 我试过:Date 创建一个;句号;Stata中日期变量的变量,date,vector,time,panel,stata,Date,Vector,Time,Panel,Stata,我有带id和日期的面板数据(不平衡)来确定两个维度。ID是1-449之间的整数。日期为2004年第一季度至2012年第四季度的季度。是否可以创建一个以日期向量为条件的新变量t 例如: 2004Q1=>1 2004Q2=>2 等等 对于一个平衡的面板来说,这是没有问题的,但是我如何才能使它成为一个不平衡的面板呢 我试过: sort company_id date by company_id: gen t = _n 这实际上计算了观察结果。例如,问题是,company_id=4不是从2004Q
sort company_id date
by company_id: gen t = _n
这实际上计算了观察结果。例如,问题是,
company_id=4
不是从2004Q1开始的,而是从2005Q1开始的,所以对应的数字不应该是1,而应该是5。一种方法如下。如果年份
变量中存在差距,则不考虑这些差距。例如,2004Q1-->1
和2004Q3-->2
,如果2004Q2
不在数据库中
clear all
set more off
*----- example data -----
input ///
id quarter
1 8
1 9
1 10
2 9
2 10
2 13 // note a two-quarter gap
2 14
end
format quarter %tq
list, sepby(id)
*----- what you want -----
bysort quarter: gen coun = (_n == 1)
gen qmap = sum(coun)
drop coun
sort id quarter
list, sepby(id)
如果你想考虑差距,那么你可以做一些类似的事情:
clear all
set more off
*----- example data -----
input ///
id quarter
1 8
1 9
1 10
2 9
2 10
2 13
2 14
end
format quarter %tq
tempfile orig
save "`orig'"
list, sepby(id)
*----- what you want -----
duplicates drop quarter, force
drop id
* comment next two lines if you don't want to map years not found in the database
tsset quarter
tsfill
sort quarter
gen qmap = _n
merge 1:m quarter using "`orig'", assert(match master) keep(match)
order id quarter qmap
sort id quarter
list, sepby(id)
如果在这段代码中注释几行,那么它将给出与第一个块相同的结果
考虑差距的另一项战略:
<snip>
*----- what you want -----
summarize quarter
gen qmap = quarter - r(min) + 1
<snip>
*-----你想要什么-----
总结季度
发电机qmap=四分之一-r(最小)+1
因为Stata中的日期只是整数,所以您的问题实际上只是移动原始日期。按“最小”日期移位并添加1。您尝试了什么?请告诉我们你的尝试。每个人的四分之一是否应该映射到相同的数字?例如,
2004Q1-->1
,对于所有的id
,这个问题也不清楚。你的日期变量是什么?字符串变量或数字变量(如果是后者,是什么存储类型,什么显示格式?@Roberto Ferrer:没错,数字应该映射到每个个体。感谢更新。考虑一下你的编程问题。这意味着发布您尝试过的内容以及为什么它不适合您。@尼克·考克斯:数值变量、浮点和%tq。谢谢您的代码,第二个应该是我想要的(考虑到差距)。“注释代码中的几行”是什么意思?注释也在代码中。如果将tsset
和tsfill
注释掉,将得到与第一个解决方案相同的结果。我想知道为什么需要此变量。Stata中的日期仅为整数,因此,如果更改日期变量(例如%9.0g)的显示格式,则会出现与您要求的类似的内容,但会被某个常量移位。感谢您指出移位;在这种情况下,我可以减去移位得到日期向量?这只是看看面板有多“不平衡”。非常感谢:)我的回答包括“转移”策略。就在最后。