简化SAS中的变量输入

时间:2014-11-04 22:07:13

标签: variables input sas

我在数据中有90个变量,我想在SAS中执行以下操作。

这是我的SAS代码:

data test;
  length id class sex $ 30;
  input id $ 1 class $ 4-6 sex $ 8 survial $ 10;
cards;
1  3rd F Y
2  2nd F Y
3  2nd F N
4  1st M N
5  3rd F N
6  2nd M Y
;
run;
data items2;
set test;
length tid 8;
length item $8;
tid = _n_;
item = class;
output;
item = sex;
output;
item = survial;
output;
keep tid item;
run;

如果我有90个变量来输入这样的数据怎么办?应该有一个很长的清单。我想简化它。

2 个答案:

答案 0 :(得分:1)

您可以使用ARRAY或PROC TRANSPOSE。

以下是未经测试的,因为您还没有提供输入数据集的示例。

DATA ITEMS;
ARRAY VARS {*} VAR1-VAR90;
SET REPLACE;
DO I = LBOUND(VARS) TO HBOUUND(VARS);
    ITEM = VARS{I};
    OUTPUT;
END;
RUN;

OR

PROC TRANSPOSE DATA = TEST OUT = WANT;
    BY ID;
    VAR CLASS -- SURVIAL;
RUN;

将来最好是提供输入和所需的输出。

答案 1 :(得分:0)

我似乎无法在上面的答案中添加其他评论,因此我在这里添加一个。

您需要扩展VAR语句以包含要转置的所有变量。

CLASS - SURVIAL表示CLASS和SURVIVAL之间的所有变量。

发布您的代码和错误,以便我可以更好地帮助您。