data=xlsread("C:\Users\333\Desktop\附件1:123家有信贷记录企业的相关数据.xlsx",'销项发票信息'); %用xlsread函数来导入数据,xlsread(“文件所在位置”,“工作表名称”)
result1=zeros(123,11); %创建一个123行11列的零矩阵,用于存储最终结果
%下面for循环来处理每个企业的数据
for i=1:123
m=find(data(:,1)==i); %找到data
中第1列等于i
的行索引,即找到当前企业i
的数据行
re=data(m(1,1):max(m),:); %提取当前企业i
的所有数据行
re=sortrows(re,[3,4,5]); %按照第3、4和5列对提取的数据进行排序
void=find(re(:,10)==0); %找到第10列为0(表示作废)的行索引,并计算这些行的数量
void=size(void,1);
valid=size(m,1)-void; %计算有效发票的数量,即总行数减去作废发票的数量
mm=find(re(:,10)==1&re(:,9)>0); %找到第10列为1且第9列(金额)大于0的行索引
ree=re(mm,:); %提取满足上述条件的行
ree=sortrows(ree,[3,4,5]); %再次按照第3、4和5列对这些数据行进行排序
for j=7:9 %遍历第7到第9列,将这些列中的数据进行异常值处理
A=ree(:,j);
B = filloutliers(A,'nearest','mean'); %使用filloutliers
函数替换异常值
ree(:,j)=B;
end
smooth(1,:)=ree(1,3:4); %记录数据时间跨度的开始和结束日期
smooth(2,:)=ree(size(ree,1),3:4);
length=(((smooth(2,1)-2017)*12+ smooth(2,2)-((smooth(1,1)-2017)*12+ smooth(1,2)))); %计算时间跨度,单位为月
up=data(m(1,1):max(m),6);
up=numel(unique(up)); %用unique函数来计算第6列中唯一值的数量
result1(i,1)=i; %企业编号i
result1(i,2)=sum(ree(:,7),1); %第7列的总和
result1(i,3)=sum(ree(:,8),1); %第8列的总和
result1(i,4)=sum(ree(:,9),1); %第9列的总和
result1(i,5)=numel(m); %总行数
result1(i,6)=void; %作废发票数量
result1(i,7)=valid; %有效发票数量
result1(i,8)=valid/numel(m); %有效发票占比
result1(i,9)=up; %唯一值数量
result1(i,10)=length; %时间跨度
stdj=std(ree(:,7)./mean(ree(:,7)));
result1(i,11)=stdj; %第7列的标准差
end
参考B站;最强数模