首页 > 解决方案 > 在SAS中使用条件连接多个列

问题描述

我正在尝试根据条件连接多个列。数据如下。

CRN Diff    Pay1    Pay2    Pay3    Pay4    Pay5    Pay6    Pay7    Pay8    Pay9    Pay10
1   1   000 084 084 084 000 XXX 000 XXX XXX XXX
2   10  065 000 000 000 000 XXX XXX XXX XXX XXX
3   -1  000 XXX XXX XXX XXX XXX XXX XXX XXX XXX
4   3   XXX 000 000 000 000 000 000 000 000 000
5   -2  070 070 070 070 070 070 070 XXX XXX XXX
6   1   090 XXX XXX XXX XXX XXX XXX XXX XXX XXX

我正在使用的代码如下。

data temp;
set temp;
format hist $200.;
array col(*) Pay1-Pay10;
if diff=-1 then hist=catx('',col(2-10));
else if diff=-2 then hist=catx('',col(3-10));
else hist=catx('',col(*));
run;

我想要基于 diff=-1 、 -2 等连接列并连接相应的列。

我得到的错误是“数组下标超出范围”。请帮忙。

标签: arrayssasconcatenation

解决方案


您的数组定义不允许使用 -8 或 -7 作为索引。只有 1 到 10 之间的整数。但看起来您根本不需要定义或使用数组。

只需使用变量列表即可。OF将变量列表传递给函数时,请确保使用关键字。

if diff=-1 then hist=catx('',of pay2-pay10);
else if diff=-2 then hist=catx('',of pay3-pay10);
else hist=catx('',of pay1-pay10);

推荐阅读