这个问题让我发疯。在SAS中,当我想要连接字符串时,将不会在输入中使用将分配给结果的变量。
DATA test1;
LENGTH x $20;
x = "a";
x = x || "b";
RUN;
结果:x =“a”;
DATA test2;
LENGTH x $20;
y = "a";
x = y || "b";
RUN;
结果:x =“ab”;
DATA test3;
LENGTH x $20;
x = "a";
y = x;
x = y || "b";
RUN;
结果:x =“a”;
最后一个是如此奇怪。 x甚至没有直接参与concat。
这没有意义。因为1)你可以用这种方式做其他操作,例如transtrn,substr。 2)SAS不提供任何警告信息。
为什么?
答案 0 :(得分:5)
这是因为X的长度最初设置为20,所以它有19个尾随空白。如果添加b,则由于尾随空白而没有空间。在cat操作符之前修剪x或使用catt。您可以使用lengthc查看字符变量的长度。
DATA test1;
LENGTH x $20;
x = "a";
len=lengthc(x);
x = trim(x) || "b";
*x = catt(x, b);
RUN;
proc print data=test1;
run;
答案 1 :(得分:0)
您还可以在等式的左侧使用substr()。像这样:
substr(x,10,1) = 'a';
将第10辆车设置为“ a”。然后循环遍历x中的每个字符(其中10是)。