一个matlab小程序:挑出沪市A股年报与一季度报在同一天发布的股票

function [a,b,c]=sameday(x,y)
% x,y分别是年报与次年一季度报的发布时间,其格式是:股票代码  公告年  季  发布年  月  日;

%  有些x和y的数据记录可能有重复,就是相邻两行的数据相同。下面两段程度分别去掉x和y中重复记录的部分数据;
id=zeros(size(x,1),1);
for i=2:size(x,1)
    if x(i,1)==x(i-1,1)
        id(i)=i;
    end
end
id=find(id(:,1)==0);
x=x(id,:);

id=zeros(size(y,1),1);
for i=2:size(y,1)
    if y(i,1)==y(i-1,1)
        id(i)=i;
    end
end
id=find(id(:,1)==0);
y=y(id,:);

% 由于数据不全,可能某些股票只有年报或一季度报的数据,下面两段程序找出同时又年报和一季度报数据的股票,并赋值给a和b;
id=zeros(size(x,1),1);
for i=1:size(x,1)
    if any(y(:,1)==x(i,1))
        id(i)=i;
    end
end
id=find(id(:,1)~=0);
a=x(id,:);

id=zeros(size(y,1),1);
for i=1:size(y,1)
    if any(a(:,1)==y(i,1))
        id(i)=i;
    end
end
id=find(id(:,1)~=0);
b=y(id,:);

% 找出年报与一季度报在同一天发布的股票,赋值给c;
if any(a(:,1)-b(:,1)~=0)
    fprintf('Something goes wrong\n')
else
    c=[a,b(:,[2:end])];
    id=find( (c(:,1)>=600000)&(c(:,5)==c(:,10)) & (c(:,6)==c(:,11)) );
    c=c(id,:);
end

posted @ 2011-07-03 17:31  秋天掰穗人  阅读(540)  评论(0编辑  收藏  举报