【matlab 数据处理】excel读取和写出,匹配

一、需求分析
有两个excel,第一个excel有股票,日期,年限
第二个excel有 日期,各个年限利率(x2,X3,X4)
根据日期和年限 匹配国债利率
把匹配结果写回第一个excel
当日对应期限国债利率

数据形式:

【matlab 数据处理】excel读取和写出,匹配_第1张图片

【matlab 数据处理】excel读取和写出,匹配_第2张图片

matalb源代码:

clc,clear all
%% 
% 读取excel数据,data存放数值数据,text存放文本数据
[data1,text1]  = xlsread('E://ID//data//工作簿1.xlsx');
[data2,text2]  = xlsread('E://ID//data//国债利率.xls');
%%
%处理工作簿1,取证券简称、上市日期、债券期限(年)
X0=text1(2:end,[2,4]);
X1=data1(:,3);
%%

% 处理国债利率这个表格数据

%日期
X2=text2(2:end,1);
%国债利率
X3_2=data2(:,1);
X3_3=data2(:,2);
X3_4=data2(:,3);
X3_5=data2(:,4);
X3_6=data2(:,5);
X3_7=data2(:,6);
X3_8=data2(:,7);
X3_9=data2(:,8);
X3_10=data2(:,9);
X3_15=data2(:,10);
X3_20=data2(:,11);
X3_30=data2(:,12);

%%
%开始匹配国债利率length(X0)
for i=1:length(X0)
   %找到债券期限(年)
    num=X1(i,1);
    %找到上市日期
    day=X0(i,2);

    %找到国债利率表格的日期的索引
    [ind,col]=find(strcmp(X2(:,1),day));
    switch num
        case 2
            rate=X3_2(ind,1);
            X1(i,2)=rate;

        case 3
            rate=X3_3(ind,1);
            X1(i,2)=rate;

        case 4
            rate=X3_4(ind,1);
            X1(i,2)=rate;
        case 5
            rate=X3_5(ind,1);
            X1(i,2)=rate;

        case 6
            rate=X3_6(ind,1);
            X1(i,2)=rate;

        case 7
            rate=X3_7(ind,1);
            X1(i,2)=rate;
        case 8
            rate=X3_8(ind,1);
            X1(i,2)=rate;

       case 9
            rate=X3_9(ind,1);
            X1(i,2)=rate;

       case 10
            rate=X3_10(ind,1);
            X1(i,2)=rate;

        case 15
            rate=X3_15(ind,1);
            X1(i,2)=rate;

        case 20
            rate=X3_20(ind,1);
            X1(i,2)=rate;
        case 30
            rate=X3_20(ind,1);
            X1(i,2)=rate;
        otherwise
            X1(i,2)=0;

    end

end

X1
%%
%将匹配结果写回excel

filename = 'E://ID//data//工作簿1.xlsx';
A =X1(:,2);
sheet ='工作表1';
xlRange = 'R2';
xlswrite(filename,A,sheet,xlRange)

%%

最终结果:
【matlab 数据处理】excel读取和写出,匹配_第3张图片

你可能感兴趣的:(数据科学-matlab)