如何在SAS中打开.sas7bdat并导出到excel?

时间:2018-05-03 08:12:44

标签: excel sas export sas-macro

我对SAS很新。我有一个文件扩展名为.sas7bdat的文件,其中包含每日股票价格和百分比变化。它有近200万个订单项。我知道我可以简单地双击该文件并使用SAS 9.4打开它。但是,我正在寻找可以在编辑器中输入并打开此文件的代码。请帮帮我。

打开此文件后,我需要将其导出为ex​​cel。由于它有200万个数据,我无法在一个excel选项卡中导出所有内容。所以,我想做的是随机挑选(比如说10,000或20,000)数据,只导出这个随机挑选的数据到excel。

我的.sas7bdat文件在桌面上。

请帮忙。

3 个答案:

答案 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;

这将允许您创建多个样本,甚至可以跨多个工作表导出所有数据。