首页 > 解决方案 > 用于填充最后一个值的 SAS 数组在多列中结转

问题描述

如图片 sepstrata0 中所述,sepstrata1、sepstrata3 的最后一个值已经带有 YAS、YES、YCS 列。我想更改代码,使 sepstrata0、sepstrata1、sepstrata3 列不受影响,而来自 transposed_gen_mod 的其他列应该具有 LVCF。我有 YAS0 YES0 YCS0 YAS1 YES1 YCS1 YAS3 YES3 YCS3 列,其中我在所有 YAS 列中都有诸如“Atrisk”之类的值,类似地,YES 列的“事件”和所有 YCS 列的“审查员”,总共我有大约 9547 行每列只有第一行有值。我想将这些值转发到所有 9657 行。

谁能指导我如何修改下面的书面代码以达到结果。我试图通过循环完成但无法完成它直到结束。让我知道我是否在轨道上并帮助解决修改代码以实现结果的解决方案。

data plot_data_fin;
merge plot_datafin transposed_gen_mod;
by row;hw_lcl_lag=lag(hw_lcl);
ARRAY cols {*} YAS: YES: YCS: ;
Do i=1 to dim(cols);
if COLS[i]=" " then COLS[i]=lag(COLS[i]);
end;
run;

跑;

标签: arraysloopssassas-macrolocf

解决方案


如果 transposed_gen_mod 只有一行包含 YAS 等列,并且您想将这些值添加到 plot_datafin 上的每一行,那么您可以在没有 by 变量的情况下合并。

data plot_data_fin;
   merge plot_data_fin transposed_gen_mod;
run;

您将在日志中收到有关在没有 by 变量的情况下进行合并的警告,但结果将是正确的。

目前尚不清楚您的数据是如何构建的,因此很难连贯地回答这个问题。


推荐阅读