Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SAS数据集中的列顺序随机化_Sas - Fatal编程技术网

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

SAS数据集中的列顺序随机化,sas,Sas,下午好 我有一个SAS数据集。这是从2000年第1季度到2014年第4季度,标有发起季度的一系列现金流。这些是列。观察时间为个月(经调整) 现在,当可视化数据集时(使用PROC PRINT或导出到Excel),列是按时间顺序排列的 我想随机化列的组织顺序,最终导出到Excel,以便在第三个程序中使用 有什么想法吗?基本方法是最终在宏变量中构建一个retain列表,可以这样使用: data in_random_order; retain &random_order.; set in

下午好

我有一个SAS数据集。这是从2000年第1季度到2014年第4季度,标有发起季度的一系列现金流。这些是列。观察时间为个月(经调整)

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

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


有什么想法吗?

基本方法是最终在宏变量中构建一个
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=作为第一步。