Arrays SAS Do具有多个变量的循环
因此,我有一个包含文本的字符串,例如“Jonathan Bob Thomas Smith”,我将单词划分为4个变量(OLDVAR1-4),因此OLDVAR1将是Jonathan,OLDVAR2将是Bob等。我要做的是用do循环重写以下代码:Arrays SAS Do具有多个变量的循环,arrays,loops,sas,Arrays,Loops,Sas,因此,我有一个包含文本的字符串,例如“Jonathan Bob Thomas Smith”,我将单词划分为4个变量(OLDVAR1-4),因此OLDVAR1将是Jonathan,OLDVAR2将是Bob等。我要做的是用do循环重写以下代码: NewVar1 = Index(String,OldVar1); NewVar2 = Index(String,OldVar2); NewVar3 = Index(String,OldVar3); NewVar4 = Index(String,OldV
NewVar1 = Index(String,OldVar1);
NewVar2 = Index(String,OldVar2);
NewVar3 = Index(String,OldVar3);
NewVar4 = Index(String,OldVar4);
我试过:
Array NewVar[i];
Do i = 1 to 4;
NewVar[i] = Index(String,OldVar[i]);
end;
但我收到错误消息“UndeclareArray referenced OldVar”,并且我似乎无法在数组中执行多个引用
非常感谢您的帮助。您只需要按照SAS的要求执行:声明数组OldVar。因此,您的代码将如下所示:
Array NewVar[4];
Array OldVar[4];
Do i = 1 to 4;
NewVar[i] = Index(String,OldVar[i]);
end;
顺便说一句,不能使用
i
声明数组,除非i
已经分配了一些整数值。声明数组时必须指定实际的元素数。基本语法如下:Array arrayName(元素数)variableList代码>
e、 g
data test1;
string='Jonathan Bob Thomas Smith';
Oldvar1='Bob';
Oldvar2='Smith';
Oldvar3='mas';
Oldvar4='tha';
;
run;
data test2;
set test1;
Array NewVar(4) Newvar1-Newvar4;
Array Oldvar(4) Oldvar1-Oldvar4; *Additional array that's used in do loop;
do i=1 to 4;
NewVar[i] = Index(String,OldVar[i]);
end;
drop i;
run;