使用SAS处理Excel中的许多列

我有一个数据库,我有接近20kcolumns …这是在SAS转置程序的输出。

是否可以将SAS转换的输出分成多个csv文件? 像我可以推3000列(保持#rows相同)到5 CSV文件?..我怎样才能做到这一点与SASmacros?

基本上,每个客户都有一个20k的值。 我需要创build一个文件(S)的variables应该在列中…我的原始数据是如下所示:

CustIDvariables值1 4 0 1 3 23 1 1 22 1 2 18 2 4 0 2 3 23 2 1 22 2 2 18

所以转置后,它变成:CustID Var1 Var2 Var 3 Var4 1 22 18 23 0
2 22 18 23 0

但问题是上面的“variables”有20K的值,所以当转置它变成Var1的Var20000 ..这不能适应在Excel中。

任何其他方式来处理这个问题?

我认为Excel有16K列的容量,所以我想以这种方式处理它。请让我知道我可以如何处理这种情况

我同意这是一个坏主意,但这里是另一个可能的解决scheme;

data big; cust_id = 1; retain var1-var20000 0; run; data temp/view=temp; set big(keep=cust_id var1-var10000); run; proc export data=temp outfile='c:\temp\file1.csv' dbms=csv replace; run; data temp/view=temp; set big(keep=cust_id var10001-var20000); run; proc export data=temp outfile='c:\temp\file2.csv' dbms=csv replace; run; 

要控制写入的variables,只需要改变视图定义。 您最初问到创build五个CSV,这会创build两个。

您必须使用视图,因为PROC EXPORT不尊重KEEP或DROP数据集选项。 我不认为使用macros来做这样的事情是一个好主意,除非你非常确定自己知道自己在做什么,而且你需要多次运行不同的场景。

我将以“哇,这是一个坏主意”开始。

如果你必须这样做,你可以写你的保留声明,甚至很容易输出代码。

 proc contents data=sashelp.class out=names(keep=varnum name) noprint; run; proc sql noprint; select name into :keeplist separated by ' ' from names where varnum le 2; quit; data forexport/view=forexport; set sashelp.class; keep &keeplist; run; proc export data=forexport outfile="c:\temp\whatever.csv" dbms=csv replace; run; 

不幸的是你需要这个视图,因为直接保存列表的输出至less在9.4有一个奇怪的错误,删除换行。

然后,您可以将proc sql中的位macros指向导出,并使用不同的le / ge组合运行。 确保在每个文件中包含匹配项。