楼主: 张沂薇
4911 9

[Stata初级班] 关于“如何一次性删除连续存在的若干个观测值” [推广有奖]

  • 0关注
  • 0粉丝

VIP

讲师

91%

还不是VIP/贵宾

-

威望
0
论坛币
2078 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2812 点
帖子
106
精华
0
在线时间
1123 小时
注册时间
2010-4-9
最后登录
2020-3-31
毕业学校
BIT

楼主
张沂薇 发表于 2011-9-13 09:01:57 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
连老师好,

我的数据中有类似观测值:它们在某一段时间内都是0,不是(-97)这种缺失值,的确就是0.
我想删除“回报率连续两天以上为0的的观测值”(如下),该怎么办?谢谢!
这种情况在数据文件里很多。

id

date

rtn

mv

917

20081224

-0.02679

4.14E+09

917

20081225

-0.01376

4.08E+09

917

20081226

-0.00388

4.07E+09

917

20081229

-0.00389

4.05E+09

917

20081230

0.044531

4.23E+09

917

20081231

0.008975

4.27E+09

918

20080102

0

3.98E+08

918

20080103

0

3.98E+08

918

20080104

0

3.98E+08

918

20080107

0

3.98E+08

918

20080108

0

3.98E+08

918

20080109

0

3.98E+08

918

20080110

0

3.98E+08

918

20080111

0

3.98E+08

918

20080114

0

3.98E+08

918

20080115

0

3.98E+08

918

20080116

0

3.98E+08

918

20080117

0

3.98E+08

918

20080118

0

3.98E+08

918

20080121

0

3.98E+08

918

20080122

0

3.98E+08

918

20080123

0

3.98E+08

918

20080124

0

3.98E+08

918

20080125

0

3.98E+08


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:存在的 一次性 观测值 date 数据文件 如何

本帖被以下文库推荐

made in BIT, serving for USTB

沙发
arlionn 在职认证  发表于 2011-9-13 10:09:48
另外,想删除那些连续 T (例如 T=6)年没有资料的公司,请参考:
https://bbs.pinggu.org/thread-1171693-1-1.html
只需把其中的
gen p6 = strpos(pp, "111111")
修改为:
gen p6 = strpos(pp, "......")

进而把
drop if p6==0               // 仅保留连续六年有资料的公司
修改为:
drop if p6>0                 // 仅保留连续六年有资料的公司

本文来自: 人大经济论坛 统计软件培训班VIP答疑区 版,详细出处参考: https://bbs.pinggu.org/forum.php? ... 1&from^^uid=40938

藤椅
张沂薇 发表于 2011-9-14 21:32:48
arlionn 发表于 2011-9-13 10:09
另外,想删除那些连续 T (例如 T=6)年没有资料的公司,请参考:
https://bbs.pinggu.org/thread-1171693- ...
1、做到xtpattern, gen(pp)时,出现错误提示:number of times>244:no variable created
2、示例中的t1是一个变量吗?跟我要处理的没有关系,对吧?
made in BIT, serving for USTB

板凳
张沂薇 发表于 2011-9-14 21:46:53
arlionn 发表于 2011-9-13 10:09
另外,想删除那些连续 T (例如 T=6)年没有资料的公司,请参考:
https://bbs.pinggu.org/thread-1171693- ...
help 里说 The number of observations in each panel must not exceed 80 (or under Stata/SE,
244).

我的观测值远远大于244,如何克服这个麻烦?
made in BIT, serving for USTB

报纸
张沂薇 发表于 2011-9-14 22:39:56
分年度处理,是可以避免“观测值大于244”的麻烦,但按照您说的做还是解决不了问题。也就是我无法删掉一楼里那些连续出现的rtn==0记录
made in BIT, serving for USTB

地板
arlionn 在职认证  发表于 2011-9-14 22:47:53
可以先执行:
drop if ret==0
然后再按你的思路操作。

7
张沂薇 发表于 2011-9-14 22:51:59
arlionn 发表于 2011-9-14 22:47
可以先执行:
drop if ret==0
然后再按你的思路操作。
可能我一直没有说清楚我的问题:

我现在想删除那些连续多日的(比如连续20天)return都等于0的记录,这种情况可能是某种原因的停牌;

但是,我又不能执行drop if  rtn==0 这样的命令,因为还有些情况return只在个别日子(某一天)等于0,这种情况不能删除。
made in BIT, serving for USTB

8
arlionn 在职认证  发表于 2011-9-15 15:16:24

* 关于“如何一次性删除连续存在的若干个观测值”
* https://bbs.pinggu.org/thread-1176240-1-1.html

*----------------------------
*-Generate Simulation Dataset

  clear
  set obs 2000  // N=20, T=100
  
  egen id = seq(), from(1) to(20)
  bysort id: gen t = _n
  tsset id t
  
  set seed 135
  bysort id: gen ret = invnorm(uniform())
  
  set seed 135
  gen u = uniform()
  replace ret = 0 if u>0.6  // 40%的观察值替换成0
  
*-每执行一条命令,请输入 br 命令查看数据的变化情况  
  gen zero = (ret==0)
  bysort id: gen chg = 1 if zero[_n]!=zero[_n-1]
  bysort id: gen sum_chg = sum(chg)
  bysort id sum_chg: egen count_zero = sum(zero)
  
*-现在可以达到你的目的了
  drop if count_zero==6   // 6 表示删除连着六个交易日 return=0 的观察值

9
张沂薇 发表于 2011-9-15 19:44:05
额的神。你总能摆平stata。再次谢谢。
made in BIT, serving for USTB

10
张沂薇 发表于 2011-9-15 20:48:11
arlionn 发表于 2011-9-15 15:16
* 关于“如何一次性删除连续存在的若干个观测值”
* https://bbs.pinggu.org/thread-1176240-1-1.html
...
这个有点神奇啊!删得很给力,
但是我没完全看明白,还要好好研究一下~
made in BIT, serving for USTB

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-1 13:21