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