1

我有一个这样的数据集

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

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

4

1 回答 1

1

你非常接近,但误解了什么PROC IMPORT

完成PROC EXPORT后,它将创建一个名为 SAS 数据集orderEffect,其中包含来自工作表中列的 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步骤创建了具有这些名称的数据集。首先运行该步骤以确保并在必要时修改程序。

于 2012-12-08T00:02:31.247 回答