как обнаружить и изменить строчные буквы в SAS - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть переменная с именем 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

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Еще один способ использовать функцию prxchange.Здесь [az] указывает строчные буквы // здесь означает заменить его ничем.-1 указывает на то, сколько раз он присутствует.

 data want;
 set have;
 new_id1=prxchange('s/[a-z]//',-1, id);
 run;
0 голосов
/ 27 сентября 2018

Функция 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
...