使用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组合运行。 确保在每个文件中包含匹配项。
- 在R中使用openxlsx从excel表中读取一列
- 比较Excel中的2列,从第三个删除值,并提供结果在第四,可能是一个嵌套的索引/匹配公式?
- Excel:如何执行如下操作:select count(col3,col4,col5,col6,col7)from TBL where col2 ='1-Jan';
- VBA:将单元格与基于同一行中另一个单元格的数字相乘
- Excel公式在多列重复的情况下,find它们并在结果中更改值
- 如何创build一个可以查找,select和剪切列的macros,并将它们粘贴到另一个工作表中?
- 使用vba将多个行复制到另一个工作表中的单个列
- VBA Excel – 如何自动填充多栏中的date,如果我填充列A
- Excel到CSV仅使用VBA打印特定列