如何在SAS中使用COMPLESS函数(有例子)

470 阅读2分钟

你可以在SAS中使用COMPRESS 函数,从一个字符串中删除特定的字符。

这个函数使用以下基本语法。

COMPRESS(String, characters to be removed)

其中:

  • 字符串。要分析的字符串
  • 要删除的字符。要从字符串中删除的一个或多个特定字符

下面是使用这个函数的四种最常见的方法。

方法1:从字符串中删除所有空白的空格

data new_data;
    set original_data;
    compressed_string = compress(string_variable);
run;

方法2:从字符串中删除特定字符

data new_data;
    set original_data;
    compressed_string = compress(string_variable, '!?@#');
run;

方法3:从字符串中删除所有按字母顺序排列的字符

data new_data;
    set original_data;
    compressed_string = compress(string_variable, '', 'a');
run;

方法4:方法4:从字符串中删除所有的数字值

data new_data;
    set original_data;
    compressed_string = compress(string_variable, '', 'd');
run;

下面的例子说明了如何在SAS中用以下数据集来使用每种方法:

/*create dataset*/
data original_data;
    input name $25.;
    datalines;
Andy Lincoln4 Bernard!
Barren Michael55 Smith!
Chad Simpson7 Arnolds?
Derrick Parson2 Henry
Eric Miller2 Johansen!
Frank Giovanni5 Goode
;
run;

/*view dataset*/
proc print data=original_data;

例1:删除字符串中的所有空白空格

下面的代码显示了如何从名字列的每个字符串中删除所有的空白。

/*remove blank spaces from each string in name column*/
data new_data;
    set original_data;
    compressed_name = compress(name);
run;

/*view results*/
proc print data=new_data;

请注意,所有的空白已经从新的名为compressed_name的列中的每个字符串中被移除。

例2:删除字符串中的特定字符

下面的代码显示了如何从名字列的每个字符串中删除所有的问号和感叹号:

/*remove question marks and exclamation points from each string in name column*/
data new_data;
    set original_data;
    compressed_name = compress(name, '?!');
run;

/*view results*/
proc print data=new_data;

注意,所有的问号和感叹号已经从新的名为compressed_name的列中的每个字符串中被移除。

例3:从字符串中删除所有的按字母顺序排列的字符

下面的代码显示了如何从名字列中的每个字符串中删除所有的字母字符:

/*remove all alphabetical characters from each string in name column*/
data new_data;
    set original_data;
    compressed_name = compress(name, '', 'a');
run;

/*view results*/
proc print data=new_data;

请注意,所有的字母字符已经从新的名为compressed_name的列中的每个字符串中被移除。

例4:从字符串中删除所有数值

下面的代码显示了如何从名字列的每个字符串中删除所有的数字值。

/*remove all numeric values from each string in name column*/
data new_data;
    set original_data;
    compressed_name = compress(name, '', 'd');
run;

/*view results*/
proc print data=new_data;

请注意,所有的数字值已经从新的名为compressed_name的列中的每个字符串中被移除。