【问题标题】: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;
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-27
          • 2017-07-21
          • 1970-01-01
          • 2015-02-28
          • 2014-05-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多