如何区分SAS中的一个空间和多个空间

时间:2014-09-16 21:04:40

标签: sas

我想根据2个单词之间的空格(或特殊字符)将sas变量解析成几个变量。我希望代码只在有>时将单词放在新列中。单词之间有2个空格(或特殊字符)。 例如下面我在这里使用了^而不是空格。

    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

1 个答案:

答案 0 :(得分:2)

您可以使用正则表达式转换scan()函数可以理解的分隔文件中的数据。例如,这句话,

text2=prxchange('s/(\^| ){2,}/~/',-1,TEXT);

产生

的text2
LEVEL^OF^RENAL^IMPAIRMENT~SEVERE,^n^(%)~52^(^1.9)~133^(^1.5)

这是使用~作为分隔符的数据版本。现在您可以使用scan(),如下所示:

col1 = scan(text2,1,'~');
col2 = scan(text2,2,'~');
col3 = scan(text2,3,'~');
col4 = scan(text2,4,'~');

您可能必须修改正则表达式以捕获可构成分隔符的所有空格和特殊字符。在我的示例中,(\^| )表示"一个字符串,它是单个^或单个空格"。另外,如果您的数据包含~,那么您可能想要选择其他字符。