当前位置: 首页>大数据>正文

SAS编程:英文字符如何首个单词首字母大写?

欢迎关注,SAS茶谈!

工作中出一张表,AE发生部位的频数汇总。ADAE中AELOC的值是大写,由于shell中没有指明显示的大小写,在统计师确认前,我先首字母展现出来,使用函数propcase:

data test;
  set adam.adae;
  t1 = propcase(aeloc);
run;

后来,统计师要求只需要首个单词首字母大写。对于这个要求,我心里一下子觉得变扭。为什么呢?因为前面一个propcase函数实现,代码简洁;而对于统计师的要求,我脑袋里第一个想法是,提取字符的第一个单词后,使用propcase函数处理,对于剩下的再使用lowcase函数处理后,与前半部分拼接。仔细一想,繁琐了“一点点”

第一个想法,能实现要求,但是我内心不太愿意去实现。于是,寻求其他方法来实现。

首当其冲,就是想SAS中是否有实现首个单词首个字母大写的函数,直接的行动就是翻SAS函数字典(SAS Help Center: Dictionary of Functions and CALL Routines)。

SAS编程:英文字符如何首个单词首字母大写?,第1张
Dictionary of Functions and CALL Routines

但是,这么埋头一个一个看下去,效率太低。又想到,在介绍一个函数的末尾,官方文档中会附加相类似功能的函数的链接。那propcase函数的介绍结尾,会不会有我想要的函数链接呢?

我去看了下,很可惜,只有全部大写或小写的函数。这也说明,SAS中可能没有直接实现字符首个单词首字母大写的函数。

SAS编程:英文字符如何首个单词首字母大写?,第2张
Propcase

在失望之余,我看起了propcase函数的介绍,看到这个函数还有另一个参数delimiter

事情出现了转机,这个参数的功能是:

指定一个或多个用引号括起来的分隔符。
默认的分隔符是空白、正斜杠、连字符、开括号、句点和制表符。
Tip: 如果使用此参数,则默认分隔符(包括空格)将不再有效。

SAS编程:英文字符如何首个单词首字母大写?,第3张
Propcase

我苦恼的问题是,propcase函数会把每一个单词都首字母大写;而区分“每个单词”的是它们之间的空格——默认的分隔符,如果我指定分隔符不是空格,那我处理的字符不就成了“一个单词”,那这个“单词”首字母大写就实现了我想要的功能

最后,方法很简单,我随便指定一个分隔符,不那么繁琐地实现首个单词首字母大写的功能。

data test;
  set adam.adae;
  t1 = propcase(aeloc, "\");
run;

结语

文章分享了,我实现英文字符首个单词首字母大写的过程。首先想到的方法,思路简单,但实现起来“繁琐”;在寻找简洁方法的过程中,发现了propcase函数的delimiter参数可以解决我的问题。

实际工作中,并非每次尝试都能成功找到简洁的方法,最根本的目的还是将问题解决。毕竟,不管黑猫白猫,能抓到老鼠的就是好猫。如果短时间内找不到一个简洁的方法,笨方法不失为一个好方法

不过,多记录、多积累,会加大找到简洁方法的概率

感谢阅读, 欢迎关注:SAS茶谈!
若有疑问,欢迎评论交流!


https://www.xamrdz.com/bigdata/7xx1997329.html

相关文章: