在SAS中有条件地插入行

时间:2014-01-13 03:26:47

标签: sql sas

我对创建新行感兴趣的是以特定变量为条件的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中解决这个问题?感谢。

2 个答案:

答案 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。 < /尤达>