我是SAS的新手。我有一个文件扩展名为.sas7bdat的文件,其中包含每日股票价格和百分比变化。它有近200万个行项目。我知道我可以简单地双击该文件,并使用SAS 9.4打开它。但是,我正在寻找代码,我可以在编辑器中键入并打开此文件。请帮帮我。
打开此文件后,需要将其导出到excel。由于它有两百万个数据,我不能在一个excel选项卡中导出所有内容。所以,我想要做的是随机挑选(比如说10,000或20,000)数据,然后只将这些随机挑选的数据导出到excel中。
我的.sas7bdat文件在桌面上。
请帮帮忙。
发布于 2018-05-03 19:21:20
您可以使用surveyselect
并在use 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;
发布于 2018-05-03 19:00:07
您可以使用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 (动态数据交换)
发布于 2018-05-03 20:38:10
首先,创建一个指向文件系统上数据集所在位置的库。这是一个指向目录的指针(使用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;
这将允许您创建多个样本,甚至跨多个工作表导出所有数据。
https://stackoverflow.com/questions/50150083
复制相似问题