SAS Do循环具有多个变量

时间:2014-01-02 05:13:59

标签: arrays loops sas

所以我有一个带有文本的字符串,例如“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”,我似乎无法在数组中进行多次引用。

感谢任何帮助。

2 个答案:

答案 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;