在使用PROC IMPORT创build之后修改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 

我的目标是从上面的数据集中创build一个像这样的数据集:

 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工作表,但随后修改它创build的SAS数据集,所以我可以推后面的两列下面的前两个,并添加第三列根据哪些列来自?

我知道如何通过将数据集分成两个数据集,然后将模式函数追加到另一个数据集上,但使用上面的模式函数会快很多。

你非常接近,但却误解了PROC IMPORTfunction。

PROC EXPORT完成时,它将创build一个名为orderEffect的SAS数据集, orderEffect包含来自工作表中各列的SASvariables。 你只需要做一个小小的数据步骤程序来给你想要的结果。 尝试这个:

 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步骤创build了一个具有这些名称的数据集。 首先运行该步骤以确保在必要时修改程序。