我对SAS很新。我有一个文件扩展名为.sas7bdat的文件,其中包含每日股票价格和百分比变化。它有近200万个订单项。我知道我可以简单地双击该文件并使用SAS 9.4打开它。但是,我正在寻找可以在编辑器中输入并打开此文件的代码。请帮帮我。
打开此文件后,我需要将其导出为excel。由于它有200万个数据,我无法在一个excel选项卡中导出所有内容。所以,我想做的是随机挑选(比如说10,000或20,000)数据,只导出这个随机挑选的数据到excel。
我的.sas7bdat文件在桌面上。
请帮忙。
答案 0 :(得分: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;
答案 1 :(得分:0)
您可以使用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(动态数据交换)
答案 2 :(得分:0)
首先,创建一个库以指向数据集所在的文件系统上的位置。这是目录的指针(用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;
这将允许您创建多个样本,甚至可以跨多个工作表导出所有数据。