用SAS只写了一封信

用SAS只写了一封信,sas,Sas,我怎样才能引用sas中的一封信 %sysfunc(tranwrd(%quote(&string),%quote(T),%quote('Test'))); 问题是,当字符串有一个“T”和“TR”时,这两个变量都会被转换为“Test”SAS宏变量始终是字符。宏函数的参数始终是字符,通常不需要额外的宏引用层,如果参数是文本,则肯定不需要 你先试过这个吗 %let string = STACKOVERFLOW; %let string_tweaked = %sysfunc(tranwrd(&a

我怎样才能引用sas中的一封信

%sysfunc(tranwrd(%quote(&string),%quote(T),%quote('Test')));

问题是,当字符串有一个“T”和“TR”时,这两个变量都会被转换为“Test”

SAS宏变量始终是字符。宏函数的参数始终是字符,通常不需要额外的宏引用层,如果参数是文本,则肯定不需要

你先试过这个吗

%let string = STACKOVERFLOW;
%let string_tweaked = %sysfunc(tranwrd(&string),T,Test);
%put NOTE: string_tweaked = &string_tweaked;
宏值是否包含嵌入的单引号

%let string = %str(S%'T%'ACKOVERFLOW);
%let string_tweaked = %qsysfunc(tranwrd(&string,'T','Test'));
%put NOTE: string_tweaked = &string_tweaked;
第二个代码示例类似于以下数据步骤代码(其范围不同于宏环境)。数据步骤字符串值以双引号(
)或单引号(
)显式引用


显示更多代码,例如用于分配
string
的%LET语句和
sysfunc
结果。对于每个输入,您希望输出是什么样子的?我从提示符中获取字母或字符串,并将其保存到变量中。这很好,我可以得到一个“T”或“AR”或“TR”、“a”等等……如果我将“TR”转换为“Test”,则b可以但是如果我只翻译字母“T”,那么“T”>“Test”和“TR”>“Test”R。
data _null_;
  string = "S'T'ACKOVERFLOW";
  string_tweaked = tranwrd(string,"'T'","'Test'");
  put "NOTE: " string_tweaked=;
run;