Excel 使用PROC导入创建SAS数据集后修改该数据集

Excel 使用PROC导入创建SAS数据集后修改该数据集,excel,input,dataset,sas,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

我有一个这样的数据集

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数据集,以便将后两列推到前两列的下方,并根据中的哪些列来添加第三列


我知道如何将数据集拆分为两个数据集,然后将一个数据集附加到另一个数据集,但使用上面的模式功能,速度会快得多。

您非常接近,但误解了
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
步骤使用这些名称创建了一个数据集。首先运行该步骤,以确保在必要时修改程序。

您非常接近,但误解了
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
步骤使用这些名称创建了一个数据集。首先运行该步骤以确保正确,并在必要时修改程序