楼主: npzyj
1553 9

[数据管理求助] 求助求助! 两个stata数据处理问题! 烦劳各位大大抽空解答! [推广有奖]

  • 0关注
  • 0粉丝

高中生

90%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
107 点
帖子
16
精华
0
在线时间
44 小时
注册时间
2013-3-18
最后登录
2021-10-27

楼主
npzyj 发表于 2015-5-21 12:01:44 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
第一个问题,

先要求两个单元格的差值,如果不等于0,就把这两个单元格所在行之间的所有行(也包括那两个单元格所在的行)都删除。如果等于0,就不做处理。 如何实现?  


第二个问题,

几只股票,按日生成成交量数据。时间1年。如果在这一年的交易里日,某只股票有连续10个交易日的成交量值为0,则把该股票本年的数据全部删除。如何实现?


想了许久,没有什么思路,不知道怎么编写代码。请各位大神帮助一下! 谢谢了!
二维码

扫码加我 拉你入群

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

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

关键词:stata数据处理 STATA数据 数据处理问题 Stata 数据处理 如何

1.jpg (24.01 KB)

1.jpg

沙发
gyqznufe 发表于 2015-5-21 12:24:56
编程控!

藤椅
npzyj 发表于 2015-5-21 13:45:48
gyqznufe 发表于 2015-5-21 12:24
编程控!
那如果编程要怎么操作呢? 数据量太大了。20多w行。。  所以

板凳
andruw 在职认证  发表于 2015-5-21 16:00:41
第1个问题没看懂。
第2个问题:假设某只股票名字为equity
如果股票只数比较多,写个loop就成。
  1. sort time
  2. gen a = .
  3. replace a = 1 if equity == 0
  4. gen b = a != a[_n-1]
  5. gen c = sum(b)
  6. bysort c: gen d = sum(a)
  7. egen e = max(d)
  8. if e >= 10 drop equity
复制代码

报纸
npzyj 发表于 2015-5-21 17:11:50
andruw 发表于 2015-5-21 16:00
第1个问题没看懂。
第2个问题:假设某只股票名字为equity
如果股票只数比较多,写个loop就成。
大神 我初学stata 很多都不怎么会。。。。 您说的这一段代码也没怎么理解。 我QQ是304359858 我能加您请教吗  万分感谢!!

地板
andruw 在职认证  发表于 2015-5-21 18:17:05
npzyj 发表于 2015-5-21 17:11
大神 我初学stata 很多都不怎么会。。。。 您说的这一段代码也没怎么理解。 我QQ是304359858 我 ...
好久不用QQ了。我也是学stata没多久,不是什么大神。你可以把不理解的放在论坛上,大家讨论,共同进步。

7
npzyj 发表于 2015-5-22 12:41:07
andruw 发表于 2015-5-21 18:17
好久不用QQ了。我也是学stata没多久,不是什么大神。你可以把不理解的放在论坛上,大家讨论,共同进步。[ ...
好的。 第一个问题我已经解决了。 第二个问题您的回复我真心没太看懂。 。。  您能解释一下么?   
我数据的排列格式是这样的:

code         date                vo
600000     2014-01-02       10000000
……
600000     2014-12-31       15000000
600004     2014-01-02       23000000
……
600004     2014-12-31       25600000
……

有很多只股票,因为是整个上证A股的股票。股票的代码相互之间没有关系,每只股票的日数据也不一定每一个交易日都有, 成交量每一天不一样。
如果在这一年的交易里日,某只股票有连续10个交易日的成交量值为0,则把该股票本年的数据全部删除。
您能用循环再解释一下吗?   感谢!!!

8
andruw 在职认证  发表于 2015-5-22 14:44:15
npzyj 发表于 2015-5-22 12:41
好的。 第一个问题我已经解决了。 第二个问题您的回复我真心没太看懂。 。。  您能解释一下么?   
我数 ...
sort time   \\ 按时间排序
gen a = .   \\ 生成变量a,所有值均为missing data
replace a = 1 if equity \\如果股票交易量为0,将a替换为1

gen b = a !=a[_n-1] \\当某个a值不等于其上一期a值时,b=1;当a等于其上一期a值时,b=0

gen c = sum(b)  \\ 生成c,其值为b值的加总。其结果是,每只股票每个连续且相同的交易额仅对应一个c值。

bysort c: gen d = sum(a)  \\按照c分组,组内加总。

egen e = max(d) \\ 取d的最大值,生成e。 该最大值,即为该只股票连续0交易额的天数。

if e > = 10 drop equity \\ 如果连续0交易额超过10天,drop 该股票。


建议先自己生成一组dataset,写个类似的do-file,看每一步数据的变化。当然,方法也肯定不唯一。

9
npzyj 发表于 2015-5-22 15:55:18
andruw 发表于 2015-5-22 14:44
sort time   \\ 按时间排序
gen a = .   \\ 生成变量a,所有值均为missing data
replace a = 1 if equi ...
非常感谢!

sort code

by code:egen e=max(d)

keep if e<=10

我发现最后用一下这个就可以不用循环 直接按code分组,把每只股票里只要有超过10天交易量为0的都删除

10
andruw 在职认证  发表于 2015-5-22 16:29:34
npzyj 发表于 2015-5-22 15:55
非常感谢!

sort code

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-29 13:15