所以我有一个带有文本的字符串,例如“Jonathan Bob Thomas Smith”,我将这些单词划分为4个变量(OLDVAR1-4),因此OLDVAR1将是Jonathan,而OLDVAR2将是Bob等。我想要的是什么do是用do循环重写以下代码:
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;
但是我收到错误消息“未声明的数组引用了OldVar”,我似乎无法在数组中进行多次引用。
感谢任何帮助。
答案 0 :(得分:0)
您只需要执行SAS要求您执行的操作:声明阵列OldVar。所以你的代码看起来像:
Array NewVar[4];
Array OldVar[4];
Do i = 1 to 4;
NewVar[i] = Index(String,OldVar[i]);
end;
顺便说一句,你不能使用i
声明数组,除非i
已经分配了一些整数值。
答案 1 :(得分:0)
在声明数组时,您必须指定实际的元素数。基本语法如下: Array arrayName(no. of elements) 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;