使用PROC IMPORT创建SAS数据集后对其进行修改

时间:2012-12-07 23:25:12

标签: excel input dataset sas

我有这样的数据集

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列+一个分类中,表明它们来自哪一组

这是我到目前为止所拥有的

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数据集,这样我就可以将前两个下面的第二列推到第二列,并根据来自哪些列添加第三列?

我知道如何通过将数据集拆分为两个数据集然后将一个数据集附加到另一个数据集上来实现此目的,但使用上面的模式函数会更快。

1 个答案:

答案 0 :(得分: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步骤创建了包含这些名称的数据集。首先运行该步骤以确保并在必要时修改程序。