我对创建新行感兴趣的是以特定变量为条件的SAS。
假设这些是RecordID,ItemName,ItemCount,ItemX,ItemY,ItemZ列的名称。
ItemX,ItemY和ItemZ是可以等于或大于0的数字变量
当ItemX,ItemY和/或ItemZ保持大于0的值时,我想要创建一个新行,其中ItemName包含变量名称(ItemX,ItemY,ItemZ)和ItemCount以包含数值。
例如,如果RecordNumber = 1具有ItemX = 5且ItemY = 10,则ItemName = ItemX和ItemCount = 5将出现在新行中。 ItemName = ItemY和ItemCount = 10有自己的行。
我应该如何在SAS中解决这个问题?感谢。
答案 0 :(得分:2)
非常简单:
data want(keep=ItemName ItemCount);
set have;
array items[3] itemx itemy itemz;
format ItemName $32. ItemCount best.;
do i=1 to 3;
if items[i] > 0 then do;
ItemName = vname(items[i]);
ItemCount = items[i];
output;
end;
end;
run;
创建项变量数组。循环遍历该数组。检查你的状况。使用vname()
函数获取变量名称和output
语句以创建输出记录。
答案 1 :(得分:1)
我明白你打算做什么 <尤达> 你寻求PROC TRANSPOSE。 < /尤达>