SAS数据集中的列顺序随机化
下午好 我有一个SAS数据集。这是从2000年第1季度到2014年第4季度,标有发起季度的一系列现金流。这些是列。观察时间为个月(经调整) 现在,当可视化数据集时(使用PROC PRINT或导出到Excel),列是按时间顺序排列的 我想随机化列的组织顺序,最终导出到Excel,以便在第三个程序中使用SAS数据集中的列顺序随机化,sas,Sas,下午好 我有一个SAS数据集。这是从2000年第1季度到2014年第4季度,标有发起季度的一系列现金流。这些是列。观察时间为个月(经调整) 现在,当可视化数据集时(使用PROC PRINT或导出到Excel),列是按时间顺序排列的 我想随机化列的组织顺序,最终导出到Excel,以便在第三个程序中使用 有什么想法吗?基本方法是最终在宏变量中构建一个retain列表,可以这样使用: data in_random_order; retain &random_order.; set in
有什么想法吗?基本方法是最终在宏变量中构建一个
retain
列表,可以这样使用:
data in_random_order;
retain &random_order.;
set in_fixed_order;
run;
解决该问题的方法是从sql表dictionary.columns
或sas表sashelp.vcolumn
开始,按memname=[datasetname,在所有大写字母中]和libname=[libname,在所有大写字母中]
以及通过定义您的按时间顺序排列的列(而不是您不希望随机排列的ID/其他列),然后使用您喜欢的任何方法随机排列该数据集的顺序(通常,只需向其添加一个随机数,然后按随机数对该数据集进行排序)
然后,使用procsqlselectinto
方法,或者callexecute
,或者任何您想要构造retain语句的方法-我喜欢selectinto:
proc sql;
select name
into :random_order separated by ' '
from random_order_dataset
order by random_number
;
quit;
出于好奇,为什么随机化列顺序会有帮助?这是为了匿名化Kaggle之类的数据吗?这将被输入Excel宏,该宏将获取几张不同的现金流表,并生成可输入债券分析程序的输出。随机列将与另外两个静态集配对,以创建新的假设分析场景。SAS->Excel宏->债券分析程序听起来很可怕。在SAS中使用Excel部分可能会更好。并将列转换为行,以便于在SAS中进行管理。也就是说,乔的方法很好。也可以以PROC CONTENTS OUT=作为第一步。