我需要在sas中替换一系列文本字符串。我使用下面的代码替换字符串,它工作正常。
但仍然想知道,有没有比这更好更强大的方法来替换文本字符串?
输入数据集的观察次数超过100000次
_PARAM = tranwrd(tranwrd(tranwrd( tranwrd(tranwrd(param,'/Erythrocytes ',''),'/Leukocytes ',''), '^3','!{super 3}' ), '^6', '!{super 6}'),'/uL', '/µL');
非常感谢您提前
勒凯什。
答案 0 :(得分:1)
为了使其更具可读性,您可以将函数调用分成多行,如下所示:
param = tranwrd(param,'/Erythrocytes ', '');
param = tranwrd(param,'/Leukocytes ' , '');
param = tranwrd(param, '^3' , '!{super 3}' );
param = tranwrd(param, '^6' , '!{super 6}');
param = tranwrd(param,'/uL' , '/µL');
_param = param;
为了使其更加强大,您可以考虑将其全部转换为大写或小写(upcase()
,lowcase()
),以确保您的tranwrd()
函数与字符串匹配(如果输入变化)。
编辑:您似乎也可能对性能感到担忧。即使在具有数百万观测值的数据集上,这些操作也应该非常快。如果您发现情况并非如此,那么您可能需要检查param
变量的长度并确保它不会过长。当针对它们运行字符函数时,很长的字符变量将花费相对较长的时间。
答案 1 :(得分:-2)
如果你想删除文本,即用“”替换,那么你可以简单地使用 compress 函数。因此,对于您想要摆脱“/红细胞”和“/白细胞”的情况,您可以使用:
param = compress(param,'/ErythrocytesLeukocytes ');
或更明确地说:
param = compress(param,'/ErythrocytesLeukocytes ', '');