Date 创建一个;句号;Stata中日期变量的变量

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

我有带id和日期的面板数据(不平衡)来确定两个维度。ID是1-449之间的整数。日期为2004年第一季度至2012年第四季度的季度。是否可以创建一个以日期向量为条件的新变量t

例如:

2004Q1=>1

2004Q2=>2

等等

对于一个平衡的面板来说,这是没有问题的,但是我如何才能使它成为一个不平衡的面板呢

我试过:

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)的显示格式,则会出现与您要求的类似的内容,但会被某个常量移位。感谢您指出移位;在这种情况下,我可以减去移位得到日期向量?这只是看看面板有多“不平衡”。非常感谢:)我的回答包括“转移”策略。就在最后。