【问题标题】:Creating a "period" variable from a date variable in Stata从Stata中的日期变量创建“期间”变量
【发布时间】:2014-10-04 11:06:33
【问题描述】:

我有带有 id 和 date 的面板数据(不平衡)来确定两个维度。 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,代表所有id
  • 问题也不清楚。你的日期变量是什么?字符串变量还是数值变量(如果是后者,是什么存储类型,什么显示格式?)?
  • @Roberto Ferrer:确切地说,这个数字应该映射到每个人。
  • 感谢您的更新。考虑将您的编程问题添加到问题中。这意味着发布您尝试过的内容以及为什么它不适合您。
  • @Nick Cox:数值变量、浮点数和 %tq。

标签: date vector time panel stata


【解决方案1】:

一种方法如下。如果year变量中存在空白,则不予考虑。例如,2004Q1 -- > 12004Q3 --> 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>

因为 Stata 中的日期只是整数,所以您的问题实际上只是关于移动原始日期。按“最小”日期移动并加 1。

【讨论】:

  • 谢谢你的代码,第二个应该是我想要的(考虑到差距)。 “在 [the] 代码中注释几行”是什么意思?
  • 注释也在代码中。如果你注释掉tssettsfill,你会得到和第一个解决方案一样的结果。
  • 我想知道你为什么需要这个变量。 Stata 中的日期只是整数,因此如果您更改日期变量的显示格式(例如 %9.0g),您会得到类似您要求的内容,但会移动一些常量。
  • 感谢您指出转变;在这种情况下,我可以减去班次并获得日期向量?只是看看面板有多“不平衡”。非常感谢你:)
  • 我的回答包括“转变”策略。到了最后。
猜你喜欢
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
  • 2021-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多