【问题标题】:How to open .sas7bdat in SAS and export to excel?如何在 SAS 中打开 .sas7bdat 并导出到 excel?
【发布时间】:2018-05-03 08:12:43
【问题描述】:
我对 SAS 很陌生。我有一个文件扩展名为 .sas7bdat 的文件,其中包含每日股票价格和百分比变化。它有近 200 万个订单项。我知道我可以简单地双击该文件并使用 SAS 9.4 打开它。但是,我正在寻找可以在编辑器中输入并打开此文件的代码。请帮帮我。
打开此文件后,我需要将其导出到 Excel。由于它有 200 万个数据,我无法在单个 Excel 选项卡中导出所有内容。所以,我想做的是随机选择(比如 10,000 或 20,000 个)数据,然后仅将这些随机选择的数据导出到 Excel。
我的 .sas7bdat 文件在桌面上。
请帮忙。
【问题讨论】:
标签:
excel
sas
export
sas-macro
【解决方案1】:
您可以使用surveyselect 并指定您希望在子集中使用proc export 的记录数。
在下面的示例中,我创建了一个包含 10 行的表,并且只需要子集中的 5 行。只需将我的宏变量中的值从5 更改为100000
代码:
data have;
input value;
datalines;
1
2
3
4
5
6
7
8
9
10
;
run;
%let subset=5;
proc surveyselect data=have
method=srs n=&subset. out=want;
run;
输出:
value=1
value=2
value=5
value=6
value=10
出口:
proc export data=sashelp.class
outfile='c:\myfiles\want.csv'
dbms=csv
replace;
run;
您还可以过滤要导出的数据,下面的虚拟示例:
proc export data=want (where=(value > 100 or location='X'))
outfile='c:\myfiles\want.csv'
dbms=csv
replace;
run;
【解决方案2】:
您可以使用ODS。这会更简单,但会生成一个文件,在第一次打开时会发出警告
libname rd_data "<Your Path to dataset>"
data temp;
set rd_data.<dataset name>;
rnd = ranuni(123456);
run;
proc sort data = temp out = temp(drop=rnd);
by rnd;
run;
**** Remember this is .xls file, not .xlsx
ods html file = <xls file path - full path>;
proc print data = temp(obs=1000);
run;
ods html close;
或者,您可以使用 DDE(动态数据交换)
【解决方案3】:
首先,创建一个库以指向文件系统上数据集所在的位置。这是一个指向目录的指针(在 C 语言中)。
libname myData "<path to folder>";
从那里你可以使用一个随机数和一个数据步骤来获得 N 个随机值。或者,可以使用PROC SURVEYSELECT,但您可能没有获得许可。
data temp;
set myData.<Data Set Name>;
__rnd = ranuni(1);
run;
proc sort data=temp ;
by __rnd;
run;
data toOutput;
set temp(obs=10000 drop=__rnd);
run;
最后一个数据步骤仅读取您在上面随机化的前 10,000 条记录。
然后您可以使用PROC EXPORT 导出值。
proc export data=toOutput outfile="c:\temp\output.xlsx" dbms=xlsx replace;
sheet="MyData";
run;
这里的好处是您可以在文件中创建其他带有额外导出的工作表。
proc export data=toOutput outfile="c:\temp\output.xlsx" dbms=xlsx replace;
sheet="MyData2";
run;
这将允许您创建多个样本,甚至可以跨多个工作表导出所有数据。