状态:整理我的面板数据集-如果先前的ID满足补充准则,则过滤符合准则的观察结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了状态:整理我的面板数据集-如果先前的ID满足补充准则,则过滤符合准则的观察结果相关的知识,希望对你有一定的参考价值。

[尊敬的Stackoverflow爱好者,

[如果此帖子未完全遵循所设置的准则,请提前原谅我-第一次使用Stackoverflow。我一直在Stata的搜索,帮助和pdf函数中努力寻找答案,工具和建议,但一直感到困惑。

我正在使用一个数据集,该数据集包含Stata 16.0中9个宽变量的118,979个观测值。最突出的变量是公司在多个日期的观察结果是“ GPS”还是“ EPS”。这些公司可以报告数据点中的“ GPS”观测值,也可以报告以下数据点中的“ EPS”观测值。请参阅下面的数据概述以进一步可视化。

数据样本:

clear
input str8 cusip8 str16 cname str4 measure double actual long anndats_act float(fyear tanalyst meanforcast UE)
"87482X10" "TALMER BANCORP"   "EPS"   1.21 20118 2014  29   .8686207     .3930131
"87482X10" "TALMER BANCORP"   "GPS"   1.02 20479 2015  34   .8576471     .1893004

对于我当前的项目,一旦标识符(即上表中的cusip8)报告了多个日期的EPS,则需要删除GPS的观测值(多个日期)。就是说,如果一家公司报告了GPS和EPS,例如2010年1月1日,我想放弃GPS观测值,以便保留EPS。如果公司仅报告GPS,而在给定日期内未报告EPS,则我希望将GPS观测值保留在数据集中。

任何帮助将不胜感激。诚挚的问候,并希望等待您的见解,

Casper

答案

以下内容对我有用(根据需要调整变量名:]

. clear

. input str10(company_id measure) month day year

     company_id measure month day year
  1. "Company A" "EPS" 1 1 2010
  2. "Company A" "GPS" 1 1 2010 
  3. "Company A" "GPS" 1 1 2010
  4. "Company A" "GPS" 1 2 2010
  5. "Company B" "EPS" 1 2 2010
  6. "Company B" "GPS" 1 1 2010
  7. "Company C" "GPS" 1 4 2010
  8. "Company C" "EPS" 1 4 2010
  9. end

. 
. gen date = mdy(month,day,year)

. format date %d

. drop month day year

. 
. sort company_id date measure

. 
. gen both = 0

. by company_id date: replace both = 1 if measure[1] == "EPS" & measure[2] == "GPS"
(5 real changes made)

. 
. list, sepby(company_id)

     +----------------------------------------+
     | company~d   measure        date   both |
     |----------------------------------------|
  1. | Company A       EPS   01jan2010      1 |
  2. | Company A       GPS   01jan2010      1 |
  3. | Company A       GPS   01jan2010      1 |
  4. | Company A       GPS   02jan2010      0 |
     |----------------------------------------|
  5. | Company B       GPS   01jan2010      0 |
  6. | Company B       EPS   02jan2010      0 |
     |----------------------------------------|
  7. | Company C       EPS   04jan2010      1 |
  8. | Company C       GPS   04jan2010      1 |
     +----------------------------------------+

. 
. drop if measure == "GPS" & both == 1
(3 observations deleted)

. 
. list, sepby(company_id)

     +----------------------------------------+
     | company~d   measure        date   both |
     |----------------------------------------|
  1. | Company A       EPS   01jan2010      1 |
  2. | Company A       GPS   02jan2010      0 |
     |----------------------------------------|
  3. | Company B       GPS   01jan2010      0 |
  4. | Company B       EPS   02jan2010      0 |
     |----------------------------------------|
  5. | Company C       EPS   04jan2010      1 |
     +----------------------------------------+

以上是关于状态:整理我的面板数据集-如果先前的ID满足补充准则,则过滤符合准则的观察结果的主要内容,如果未能解决你的问题,请参考以下文章

Postgres Debezium 不发布记录的先前状态

机器学习系列补充:数据集准备和更正YSX包

如何计算数据集中的连续性?

SQL - 如果满足使用多个先前列的条件,则 LAG 获取先前值

多模态分析数据集(Multimodal Dataset)整理

待补充 | ​Chrome调试工具常用功能整理