SAS 中的子串和反转
我有一个 SAS 数据集,其观察结果如下:
Abatucci Pierre*L'entrée au château*1000*1*75*91
Agneessens Edouard*Jeune femme*6000*1*40*32*5
其中 * 是字段分隔符。如何创建一个具有 First_name_letter+" "+Surname 的新变量,如下所示:
Abatucci Pierre ----> P Abatucci
Agneessens Eduard ----> E Agneessens
I have a SAS data set with observations like this:
Abatucci Pierre*L'entrée au château*1000*1*75*91
Agneessens Edouard*Jeune femme*6000*1*40*32*5
where * is the field separator. How can I create a new variable that has First_name_letter+" "+Surname like this:
Abatucci Pierre ----> P Abatucci
Agneessens Eduard ----> E Agneessens
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
试试这个。
try this.
最干净的方法是使用 SAS 中内置的 Perl 正则表达式功能:(
我假设您问题中的 *s 实际上是字段分隔符,因为您最近的另一个问题询问如何处理它。
)表达式
(\w)\w* (\w+)
导致name
第一个单词的第一个字母和name
第二个单词的第一个字母放入变量$1
中并且$2
。该命令的其余部分告诉 SAS 用$2 $1
替换该变量。The cleanest way to do this is with the Perl regular expression functionality that is built into SAS:
(I'm assuming that the *s in your question are actually field separators, because your other recent question asked how to deal with that.)
The expression
(\w)\w* (\w+)
causes the first letter of the first word ofname
and the second word ofname
to be put into variables$1
and$2
. The rest of the command tells SAS to substitute$2 $1
for this variable.