2016-12-23 646 views
0
proc iml; 
use rdata3; 
read all var _all_ into pp; 
close rdata3; 
do i = 1 to 1050; 
    perms = allperm(pp[i, ]); 
    create pp&i from perms[colname= {"Best" "NA1" "NA2" "Worst"}]; 
    append from perms; 
    close pp&i; 
end; 

我想通过do循环使用上述代码在SAS中创建多个数据集。但是,我似乎无法改变使用& i指标的每个数据集的名称。任何人都可以帮我改变我的代码,让我创建多个数据集?或者有没有其他方法可以解决如何从矩阵到循环创建多个数据集?提前致谢。如何使用循环在SAS中创建多个数据集

回答

2

您不想使用要使用IML功能的宏变量。但是,您将创建大量的数据集。

data rdata3; 
    x = 1; 
    y = 2; 
    a = 4; 
    b = 5; 
    output; 
    output; 
    run; 
proc iml; 
    use rdata3; 
    read all var _all_ into pp; 
    close rdata3; 
    do i = 1 to nrow(pp); 
     outname = cats('pp',putn(i,'z5.')); 
     perms = allperm(pp[i, ]); 
     create (outname) from perms[colname= {"Best" "NA1" "NA2" "Worst"}]; 
     append from perms; 
     close (outname); 
     end; 
    quit; 

您可以将ID变量添加到PERMS并将所有版本的PERMS附加到一个数据集中。我不确定我是否使用了最好的IML技术,我知道IML足够危险。

proc iml; 
    use rdata3; 
    read all var _all_ into pp; 
    close rdata3; 
    perms = j(1,5,0); 
    create PP_out from perms[colname= {'ID' "Best" "NA1" "NA2" "Worst"}]; 
    do i = 1 to nrow(pp); 
     perms = allperm(pp[i, ]); 
     perms = j(nrow(perms),1,i)||perms; 
     append from perms; 
     end; 
    close PP_out; 
    quit; 
+1

我同意data_null_。您可能需要为每组置换添加一个ID变量,然后编写一个包含所有数据的单个数据集。然后您可以使用BY组处理来分析数据。 – Rick

+0

我应该如何将几个数据集合到一个数据集中?我认为这是一个更好的主意 – Sopon

+0

非常感谢!你能帮我解决我发布的其他问题吗? – Sopon

相关问题