2015-11-10 49 views
1

下午好。SAS数据集中的随机化列顺序

我有一个SAS数据集。这是一系列现金流量,从Q12000到2014年第4季度标有他们的起源部分。这些是专栏。观察结果是几个月(经验丰富)。

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

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

任何想法?

+0

出于好奇,为什么会随机列顺序有所帮助?这是否将Kaggle之类的数据匿名化? – Reeza

+0

这将被输入到一个Excel宏中,该宏可以获取几张不同的现金流,并生成可以输入债券分析程序的输出。随机化的列将与另外两个静态集合配对,为分析创建新的假设场景。 –

+0

SAS-> Excel宏 - >债券分析程序听起来很可怕。可以更好地使用SAS中的Excel部分。并将您的列转换为行以便于在SAS中进行管理。也就是说,乔的做法很好。也可以从PROC CONTENTS OUT =开始,作为第一步。 – Quentin

回答

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,或任何其他方法,你想构建保留声明 - 我喜欢选择到:

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