/* 导入Excel文件 */ proc import datafile = 'D:\data\example.xlsx' out = example dbms = xlsx replace; sheet = 'Sheet1'; run;

/* 用右侧第一个不为空的值取代空值 */ data example_filled; set example;

/* 逐行遍历每个变量 */
array vars(*) _numeric_;

do i = 1 to dim(vars);
    /* 如果变量的值为空,则用右侧第一个不为空的值取代 */
    if vars(i) = . then do;
        do j = i+1 to dim(vars);
            if not missing(vars(j)) then do;
                vars(i) = vars(j);
                leave;
            end;
        end;
    end;
end;

/* 输出到新的Excel文件 */
proc export 
    data = example_filled 
    outfile = 'D:\data\example_filled.xlsx' 
    dbms = xlsx 
    replace;
    sheet = 'Sheet1';
run;

/* 输出SAS代码 */
%put /* 用右侧第一个不为空的值取代空值 */; 
%put data example_filled;
%put '  set example;';
%put '  array vars(*) _numeric_;';
%put '  do i = 1 to dim(vars);';
%put '    if vars(i) = . then do;';
%put '      do j = i+1 to dim(vars);';
%put '        if not missing(vars(j)) then do;';
%put '          vars(i) = vars(j);';
%put '          leave;';
%put '        end;';
%put '      end;';
%put '    end;';
%put '  end;';
%put '  proc export';
%put '    data = example_filled';
%put '    outfile = 'D:\data\example_filled.xlsx';';
%put '    dbms = xlsx';
%put '    replace;';
%put '    sheet = 'Sheet1';';
%put '  run;';
SAS代码:用右侧第一个非空值填充Excel空值

原文地址: https://www.cveoy.top/t/topic/mY25 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录