如何区分SAS中的一个空间和多个空间
我想根据两个单词之间的空格(或特殊字符)将一个sas变量解析为几个变量。我希望代码只在单词之间有>2个空格(或特殊字符)时才将单词放入新列中。 例如,我在这里使用了^而不是空格如何区分SAS中的一个空间和多个空间,sas,Sas,我想根据两个单词之间的空格(或特殊字符)将一个sas变量解析为几个变量。我希望代码只在单词之间有>2个空格(或特殊字符)时才将单词放入新列中。 例如,我在这里使用了^而不是空格 if TEXT=" LEVEL^OF^RENAL^IMPAIRMENT^^^^^^^SEVERE,^n^(%)^^^^^^^52^(^1.9)^^^^^^^^^ 133^(^1.5)" then col1= "LEVEL^OF^RENAL^IM
if TEXT="
LEVEL^OF^RENAL^IMPAIRMENT^^^^^^^SEVERE,^n^(%)^^^^^^^52^(^1.9)^^^^^^^^^ 133^(^1.5)"
then col1= "LEVEL^OF^RENAL^IMPAIRMENT"
col2= "SEVERE,^n^(%)"
col3="52^(^1.9)"
col4="133^(^1.5)"
如果代码可以计算每条记录最多15列的列数,那就太好了……关于,Z您可以使用正则表达式转换
scan()
函数可以理解的已删除文件中的数据。比如这句话,
text2=prxchange('s/(\^| ){2,}/~/',-1,TEXT);
第2页的文本中的结果
LEVEL^OF^RENAL^IMPAIRMENT~SEVERE,^n^(%)~52^(^1.9)~133^(^1.5)
这是使用~
作为delimeter的数据版本。现在您可以使用scan()
,如下所示:
col1 = scan(text2,1,'~');
col2 = scan(text2,2,'~');
col3 = scan(text2,3,'~');
col4 = scan(text2,4,'~');
您可能需要修改正则表达式以捕获可以组成分隔符的所有空格和特殊字符。在我的示例中,
(\^ |)
表示“单个^
或单个空格的字符串”。另外,如果您的数据包含~
,您可能需要选择其他字符。谢谢!我可以做一些与您建议的非常相似的事情,但您的代码更流畅。顺便问一下,“s”是否表示替换?