我有一个名为ID
的变量,如下所示。
ID
ABC.L
ABCa.L
BDE.L
BDEna.L
BNE.F
HDF.A
此变量在.
之前的最后一个字符或最后两个字符可能是小写字母。我想检查是否是这种情况,如果是这种情况,我将创建一个新变量并删除小写字符。如果没有小写字母,则新变量将与原始变量相同。有人可以建议我如何实现这一目标吗?
ID New_ID
ABC.L ABC.L
ABCa.L ABC.L
BDE.L BDE.L
BDEna.L BDE.L
BNE.F BNE.F
HDF.A HDF.A
答案 0 :(得分:1)
COMPRESS函数可将K =保留U =大写字母,包括。=句号
254 data have;
255 input ID $;
256 newid = compress(id,'.','KU');
257 put 'NOTE: ' (_all_)(=);
258 cards;
NOTE: ID=ABC.L newid=ABC.L
NOTE: ID=ABCa.L newid=ABC.L
NOTE: ID=BDE.L newid=BDE.L
NOTE: ID=BDEna.L newid=BDE.L
NOTE: ID=BNE.F newid=BNE.F
NOTE: ID=HDF.A newid=HDF.A
答案 1 :(得分:1)
使用prxchange函数的另一种方法。这里[a-z]表示小写字母// //表示不替换。 -1表示它存在的次数。
data want;
set have;
new_id1=prxchange('s/[a-z]//',-1, id);
run;