楼主: zs694461601
8120 25

[有偿编程] 怎样找出数据缺失的股票 [推广有奖]

  • 4关注
  • 11粉丝

已卖:2378份资源

副教授

70%

还不是VIP/贵宾

-

威望
0
论坛币
11884 个
通用积分
15.2258
学术水平
15 点
热心指数
23 点
信用等级
11 点
经验
86333 点
帖子
350
精华
0
在线时间
1359 小时
注册时间
2010-1-4
最后登录
2022-1-27

楼主
zs694461601 发表于 2012-6-20 14:44:38 |AI写论文
50论坛币
我的数据的样式如下:
股票代码 月份 指标
000001 192801 0.3
000001 192802 0.4
000001 192803 0.3
000001 192804 0.4
000001 192805 0.3
000001 192806 0.4
000001 192807 0.3
000001 192809 0.4
000002 192801 0.3
000002 192802 0.8
000002 192804 0.4
000002 192805 0.3
000002 192806 0.4
000002 192807 0.3
000002 192808 0.4
数据比较多,比如股票代码为000001的股票没有月份为192808的数据,股票代码为000002的股票没有月份为192803的数据,怎样才能找出或者标记出有缺失的月份呢?
用sas怎么实现呢?

关键词:数据缺失 股票代码 数据比较 最好 数据

回帖推荐

mymine 发表于8楼  查看完整内容

做了个笨办法,结果对的,但是过程比较繁琐而已 data a; input stk $ time $ c ; cards; 000001 192801 0.3 000001 192802 0.4 000001 192803 0.3 000001 192804 0.4 000001 192805 0.3 000001 192806 0.4 000001 192807 0.3 000001 192809 0.4 000002 192801 0.3 000002 192802 0.8 000002 192804 0.4 000 ...

本帖被以下文库推荐

只有艺术和科学能提高人,直到神圣的高度
http://blog.csdn.net/QUANT_zhang

沙发
人潮汹涌 发表于 2012-6-20 14:45:36
好抽象。。

藤椅
zs694461601 发表于 2012-6-20 14:47:33
就是有的月份没有数据,怎么找出来呢?
只有艺术和科学能提高人,直到神圣的高度
http://blog.csdn.net/QUANT_zhang

板凳
zs694461601 发表于 2012-6-20 14:54:42
人潮汹涌 发表于 2012-6-20 14:45
好抽象。。
那些地方不明白呢
只有艺术和科学能提高人,直到神圣的高度
http://blog.csdn.net/QUANT_zhang

报纸
mymine 发表于 2012-6-20 14:54:47
那加入000002股票只有192801一笔数据
那这个算缺失192802、192803……吗
缺失到哪个月截止

地板
zs694461601 发表于 2012-6-20 14:57:24
mymine 发表于 2012-6-20 14:54
那加入000002股票只有192801一笔数据
那这个算缺失192802、192803……吗
缺失到哪个月截止
只是看期间哪些月份缺失
只有艺术和科学能提高人,直到神圣的高度
http://blog.csdn.net/QUANT_zhang

7
zs694461601 发表于 2012-6-20 14:58:35
mymine 发表于 2012-6-20 14:54
那加入000002股票只有192801一笔数据
那这个算缺失192802、192803……吗
缺失到哪个月截止
比如000001只看192801到192809期间缺失的数据
只有艺术和科学能提高人,直到神圣的高度
http://blog.csdn.net/QUANT_zhang

8
mymine 发表于 2012-6-20 15:49:34
做了个笨办法,结果对的,但是过程比较繁琐而已

data a;
input stk $ time $ c ;
cards;
000001      192801     0.3
000001      192802     0.4
000001      192803     0.3
000001      192804     0.4
000001      192805     0.3
000001      192806     0.4
000001      192807     0.3
000001      192809     0.4
000002      192801     0.3
000002      192802     0.8
000002      192804     0.4
000002      192805     0.3
000002      192806     0.4
000002      192807     0.3
000002      192808     0.4
;
run;

data b;
do i=1900 to 2050;
do j=1 to 12;
output;
end;
end;
run;
data b;
set b;
format k $6. ;
if j/10<1 then k=compress(i||'0'||j);
else k=compress(i||j);
run;

proc sql;
create table c as
select distinct stk,min(time) as tmin,max(time) as tmax
from a group by stk;
quit;
proc sql;
create table d as
select distinct c.stk,k
from c left join b
on tmin<=k<=tmax;
quit;
proc sql;
create table e as
select *
from d
where compress(stk||'*'||k) not in (select compress(stk||'*'||time) from a);
quit;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

9
mymine 发表于 2012-6-20 15:54:03
思路是
1)新建了一个所有年月的数据表b,我列的190001-205012所有月份
2)对原数据表按股票分类求出每个股票的最大时间和最小时间,数据表c
3)用sql拼接,按股票提取出时间位于该股票最小和最大时间之间的所有时间,数据表d4)用sql取出d表中存在而a表中不存在的时间记录即是所得

10
mymine 发表于 2012-6-20 15:56:41
再优化一下

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 20:42