随机化SAS数据集中的列顺序

时间:2015-11-10 19:04:47

标签: sas

下午好。

我有一个SAS数据集。从Q12000到Q42014,这是一系列标有其季度的现金流量。这些是列。观察结果为数月(经验丰富)。

现在,在可视化数据集时(使用PROC PRINT或导出到Excel),列按时间顺序排列。

我想随机化列组织的顺序,最终导出到Excel以便后续在第三个程序中使用。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

基本方法是最终在宏变量中构造一个retain列表,可以这样使用:

data in_random_order;
  retain &random_order.;
  set in_fixed_order;
run;

解决该问题的方法是从sql表dictionary.columns或sas表sashelp.vcolumn开始,按memname=[datasetname, in all caps] and libname=[libname, in all caps]过滤以及按时间顺序列定义对于您不想随机化的ID /其他列,然后使用您喜欢的任何方法随机化该数据集的顺序(通常,只需向其添加随机数,然后按随机数对该数据集进行排序)。

然后,使用proc sql select into方法,或call execute,或者您喜欢的任何其他方法来构造retain语句 - 我喜欢选择:

proc sql;
  select name 
    into :random_order separated by ' '
    from random_order_dataset
    order by random_number
  ;
quit;