我在数据中有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个变量来输入这样的数据怎么办?应该有一个很长的清单。我想简化它。
答案 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之间的所有变量。
发布您的代码和错误,以便我可以更好地帮助您。