【问题标题】:Modifying A SAS Data set after it was created using PROC IMPORT使用 PROC IMPORT 创建 SAS 数据集后对其进行修改
【发布时间】:2012-11-26 04:39:40
【问题描述】:

我有一个这样的数据集

Obs MinNo EurNo MinLav EurLav 
1   103    15.9    92    21.9 
2    68    18.5   126    18.5 
3    79    15.9   114    22.3 

我的目标是从上面的数据集中创建一个这样的数据集:

Obs Min    Eur     Lav 
1   103    15.9    No    
2    92    21.9    Yes     
3    68    18.5    No    
4   126    18.5    Yes
5    79    15.9    No
6   114    22.3    Yes

基本上,我将 4 列附加到 2 列中 + 一个分类,指示它们来自哪一组 2 列

这是我目前所拥有的

PROC IMPORT DATAFILE='f:\data\order_effect.xls' DBMS=XLS OUT=orderEffect;
RUN;

DATA temp;
INFILE orderEffect;
INPUT minutes euros @@;
IF MOD(_N_,2)^=0 THEN lav='Yes';
ELSE lav='No';
RUN;

我的问题是如何导入 Excel 工作表,然后修改它创建的 SAS 数据集,以便我可以将后两列推到前两列下方,并根据其中的列来添加第三列?

我知道如何通过将数据集分成两个数据集然后将一个附加到另一个数据集来做到这一点,但是使用上面的模式功能会快很多。

【问题讨论】:

    标签: excel input dataset sas


    【解决方案1】:

    你很亲密,但误解了PROC IMPORT 的作用。

    PROC EXPORT 完成后,它将创建一个名为 orderEffect 的 SAS 数据集,其中包含来自工作表中列的 SAS 变量。你只需要做一个小数据步骤程序就可以得到你想要的结果。试试这个:

    data want;
    
       /* Define the SAS variables you want to keep */
       format Min 8. Eur 8.1;
       length Lav $3;
       keep Min Eur Lav;
    
       set orderEffect;
    
       Min = MinNo;
       Eur = EurNo;
       Lav = 'No';
       output;
    
       Min = MinLav;
       Eur = EurLav;
       Lav = 'Yes';
       output;
    run;
    

    这假定PROC IMPORT 步骤创建了一个具有这些名称的数据集。首先运行该步骤以确保并在必要时修改程序。

    【讨论】:

      猜你喜欢
      • 2017-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 2016-11-02
      • 2021-12-06
      相关资源
      最近更新 更多