我有这样的数据集
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数据集,这样我就可以将前两个下面的第二列推到第二列,并根据来自哪些列添加第三列?
我知道如何通过将数据集拆分为两个数据集然后将一个数据集附加到另一个数据集上来实现此目的,但使用上面的模式函数会更快。
答案 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
步骤创建了包含这些名称的数据集。首先运行该步骤以确保并在必要时修改程序。