CATS和CATX函数
这两个函数用于连接字符串。函数CATS首先去掉每个要连接字符串的首尾空格。CATX也会去掉首尾的空格,并且还会在每个字符串之间插入分隔符(CATX函数的第一个语句)。
这些函数需要非常注意的点是结果的存储长度,如果没有预先定义,默认是长度200。而你使用连接符号(||或!!)只是这些连接字符串长度之和。
如果你有一系列的变量如Base1-Basen,你可以在列表前使用关键词‘OF’。最后,列表中的值可以是字母,也可以说数字。如果一些语句是数字,SAS将会把数字当作字母对待,并且不会在SAS log里面出现转换信息。
下面的例子示意这些函数字母操作去掉空格,函数CATX字母插入分隔符。
程序17
1 2 3 4 5 6 7 8 | data join_up; length Cats $ 6 Catx $ 13; String1 = 'ABC '; String2 = ' XYZ '; String3 = '12345'; Cats = cats(String1,string2); Catx = catx('-',of String1-String3); run; |
图17:程序17的输出结果
Cats Catx
ABCXYZ ABC-XYZ-12345
COUNT和COUNTC函数
SAS有两个计数函数,COUNT和COUNTC。它们之间的区别就像FIND和FINDC。COUNT计算一个子字符串在一个字符串中出现的次数,COUNTC计算单独字母在字符串中出现的次数。这些函数的语句和FIND和FINDC一样。第一个语句是你想要搜索的字符串,第二个语句是子字符串(COUNT)或一列字母(COUNTC)。最后你可以在第三个语句中使用可选的修饰符,其中修饰符‘i’(忽略大小写)最有用了。 (更多…)
SUBSTR函数
如果你需要从一个字符串中提取一个子字符串,你需要SUBSTR函数。需要提醒一下的是,有个函数SUBSTRN非常像SUBSTR,就是多了一些额外的特征。我不知道这些特征是否经常被需要,因此本文选择描述稍微简单的函数SUBSTR。
此函数的第一个语句是输入字符串,第二个语句是你想要提取字符串的开始位置,第三个是,可选语句,设定子字符串的长度。如果你忽略第三个语句,函数将提取输入字符串中最后一个非空字母,也就是说,它忽略输入字符串的后面的空格(这个特征非常有用)。
在我们继续例子之前,理解默认长度这个概念非常重要。比如说,在下一个程序中,如果你没有写LENGTH语句,SAS将仍然需要设置一个长度给State。对于这个函数,默认长度等于函数第一个语句的长度。你不能使得从字符串提取的子字符串长于字符串本身。很多其他的SAS字符函数默认长度为200。需要保证的是,具有这个功能的函数需要在DATA步中包含LENGTH语句。最好是包含LENGTH语句,即使是不需要,这样是没有风险的。http://saslist.net/
下面是一个使用SUBSTR函数的简单例子。
程序9
1 2 3 4 5 6 7 8 9 | data pieces_parts; input Id $9.; length State $ 2; State = substr(Id,3,2); Num = input(substr(Id,5),4.); datalines; XYNY123 XYNJ1234 ; |
这里是你想要提取州号码(从位置3开始,一共两位),ID的数字部分从位置5开始。注意你忽略数值提取中的第三个语句。这个非常有用,因为有的数字是3个字符长,有的是4个字符长。这个例子中,你使用INPUT函数将字符转化为数值。
图9,程序9的输出结果
Id State Num
XYNY123 NY 123
XYNJ1234 NJ 1234
使用等号在左边的SUBSTR函数
在早期学SAS的时候,等号在左边的SUBSTR函数被称为是SUBSTR假函数。据我所知,这是SAS唯一等号在左边的函数。下面是它的用途:
允许你用新的字符来替代已有字符串中的字符。这个听起来挺复杂的,但是你通过下面的程序看到,这实际上是很直接的方式。下面的程序使用SUBSTR函数(等号在左边的)来遮住帐号的前五个字符。 (更多…)
下面是Dr. Ron Cody的一篇关于SAS函数的文章,非常好的函数介绍文章。曾经在2009年SAS公司(上海)举办的一次SASor聚会上,我做了一次关于SAS函数的presentation分享,见 ppt和正文,我发现竟然有部分内容重合。 我个人非常喜欢SAS系统提供的函数,建议老手新手都可以读读下面的文章,祝都有所获!
by Dr. Ron Cody 翻译 sxlion
摘要:
SAS函数为你的数据步(DATA step)编程提供惊人的能力。有一部分SAS函数是精华,能够帮助你节省大量不必要的代码。这篇文章内容覆盖其中最有用的一些SAS函数。有些函数可能对你来说有些陌生,然后她们将会改变你的编程方式,并助你轻松完成日常的编程任务。
介绍:
本文写到的大部分函数都与字符数据有关,这些函数的功能包括搜索字符串,查找和替代字符串,或连接字符串,还有些函数能测量两个字符串之间的距离(这对于“模糊”配对非常有用)。一些最新和最叹为观止的函数还以Call例程的形式存在。你知道怎么用函数在同一个观察值进行排序吗?你知道你不仅可以定位一列变量中极大或极小值,而且可以定位到第二位、第三位最大或最小的值? 如果你觉得上面的介绍能够吸引你的兴趣,请继续往下读! http://saslist.net
SAS是怎样存储字符值的?
在我们讨论字符函数之前,了解SAS怎样存储函数值非常重要。为了帮助讨论,你首先需要理解两个重要的字符函数:LENGTHN和 LENGTHC。
LENGTHN和 LENGTHC
这两个函数返回字符值的长度信息,其中LENGTHN返回未计算后缀空格语句的长度。LENGTHC返回字符变量的存储长度。你也许对旧的SAS函数LENGTH比较熟悉,大部分情况下函数LENGTH和LENGTHC返回同样的值。有一个例外的是,当语句里是缺失值时,LENGTH函数返回的是1,而LENGTHN返回0。有一些新函数看起来是在旧函数后面加个字母“n”,这里的“n”代表“空字符串”(“null string”)。在SAS9中,长度为0的字符串概念被引进。在大多数情况下,如果你看到一个你似曾相识的新函数(比如说新函数TRIMN, (更多…)
这是2012年SAS全球用户大会的一篇文章,主要讲编程时注意哪些问题,才能提高SAS程序的执行效率,很显然,一篇文章很难讲全SAS代码优化的全部技术,这里只是作者本人和他调查周围的程序员的一些经验总结,有很多方面并没有考虑到,如硬件情况。但是作为一篇入门级的SAS代码优化文章来读,还是很不错的。 原文链接:http://support.sas.com/resources/papers/proceedings12/357-2012.pdf
SAS十大性能优化技术
翻译 by 空谷幽兰 修改 by sxlion
摘要
SAS/BASE模块为用户读取、处理、分析、整理和生成高质量的数据和结果提供了多种选择。部分由于SAS软件提供的功能和数据源规模的原因,许多应用开发员和最终用户都需要更高效的用户指南。本篇文章列举了我个人认为SASor实施开发应用过程中最重要的前十种性能优化和编程技术。参加者学习DATA和PROC步语句和选项将有助于完成涉及数据整理,排序,分组,合并和汇总相关任务,并同时节省CPU, I/O,数据存储空间和内存资源。
引言
在编写SAS代码和/或应用程序时,代码的高效性不总是受到开发者的重视,尤其是在开发的初期阶段。应用程序的执行情况极大地受系统性能影响。理解应用程序和系统性能需求对于活跃开发员的非常重要。
应该注意每一个程序单元以使其符合高效性能评估准则。了解用户的期望(最好在应用程序开发过程的初期阶段)往往有助于开发更有效的应用程序。这样,在应用程序接近完工时提高程序效率的难度往往是最小的。本文列举了使用SAS软件时可以提高应用程序性能的几个重要方面。
Efficiency Objectives 效率导向
这2007年SAS全球论坛(SGF2007)的一篇文章,讲的是美国公司对SAS高职职位要求情况。作者主要从网络招聘JD描述和对经理做些非正式采访的总结,并且加入作者的解读。尽管文章有点老,并且讲的是美国的情况,但是国内总体要求和这差不多。作者做了非常好的总结和说明,值得国内的初级职位人员一读。另非常感谢空谷幽兰的翻译,我做了部分润色工作。原文出处:www2.sas.com/proceedings/forum2007/124-2007.pdf
SAS高级职位是什么样子的?
翻译 by 空谷幽兰
摘要
你是否是一名希望晋升到高级职位的初级职场人吗?你是否想改变职位或者希望自己继续保持高级职位的职场人士吗?你是一位正在寻找“高级职位”员工的经理吗?那么,与“初级”职位相比,满足什么条件才是符合SAS的“高级”职位要求呢?是需要达到一定使用SAS软件的年数?还是需要特定的SAS资质?还是其他的要求?会因行业而异吗?
本文将试图采用两种调查途径以回答这些问题。首先,调查一下Monster.com网站上刊登的招聘职位的样本; 其次,与最近几个月寻找高层员工的经理进行非正式访谈。
在调查之前,我预计大多数高级职位将需要5年以上的行业经验,一些特定的技能,包括非SAS技术,如特定的操作系统或其他软件技能、强调能够独立完成任务且能够与从初级职员到高级管理员多层次人员沟通。我的预测是正确,还是大错特错呢? 请继续往下看。 http://saslist.net
背景
我非常想要探讨这个问题,是基于以下几个原因:
1)我的工作已经外包给别人,在做了几年的“高级职位”工作之后,我需要找一个职位。我发现一些要求非常具体的职位。公司宁愿等待拥有特定技能的合适人员,也不愿雇佣拥有部分技能的人,然后对他们缺乏的技能进行培训。
这是一份迟来的面经,本来是2011年3月就发布到SASlist,鉴于作者当时刚到SAS公司工作, 为避免不必要的问题,一年后经作者本人同意后再次发布出来,与大家分享。里面有很多真实的公司面试场景和问题,以及一些作者本人非常实用的建议,值得木有任何经验的在校生一读。另外从本站的几份求职面经看来,积极主动是每一个成功求职者的必备特质。当然,混论坛,QQ群,微薄很重要啊,信息时代获取工作信息的新途径。
SAS公司面经 for 在校生
by Chris.zhang
————前言
从口头offer到现在已经过了两天了,答应了自己要写一篇详细的面经。与其说是面经,倒不如说是自己在这条路上是怎样的成长,不求这篇胡思乱想脱口而出之文能给大家多少借鉴,只愿成为同为大四的各位在求职慢慢长路中的一盏明灯,指向你我心中的理想。互勉!
与其他人比起来,我的求职路似乎非常非常短暂,算多了就那么2个月,而投简历方式更像传说中的非主流。招聘网站的网申基本全军覆没,招聘会更是一次比一次惨。不过在一次次的惨败后吸取经验,总结技巧,最终追求到自己梦寐以求的公司的录取通知。
地球人都知道我是一个懒鬼,十分讨厌做重复无效率的工作,故甚少网申。幸运的是知道我是懒鬼的人包括自己,深知对于懒鬼这个种族来说笨鸟先飞是如此的重要,所以早在大四前的暑假自己就开始制作中英简历。(简历在面经之后我会写下一些自己的见解)。由于早早就定了找工作的方向,应聘的时候就更加有针对性了。http://saslist.net/
与SAS中国的相遇非常非常偶然,从来没想过自己有机会能进SAS公司,最多也只是希望能够在医药,金融行业能找到一份与SAS有关系的工作就不错了。为什么?一是SAS中国的招聘要求比较苛刻,基本上都属于社招的,要工作经验不说还需要master or above的学历,二是在很多都是招研发类的,虽然说自己的SAS技能还算可以,但可是上帝要给人机会,你挡也挡不住的。还记得那是星期五的早上,刚电面完一家上海招SAS数据挖掘的公司,由于感觉不好心情也就一般般,郁闷地对着电脑屏幕反省下自己。这时有猎头在SAS的QQ群发布招聘信息,是关于SAS中国招聘技术支持的,这条信息我记得在mysas那里看过,由于要求那里标明4-8年工作经验把我直接秒杀掉,所以没多理会。不过机会来到自己的眼前,不是应该去争取吗?便联系上猎头。 http://saslist.net/
我:你好,请问您是替SAS公司招人还是招SAS Programmer呢?
猎头:替SAS公司招人,你有兴趣么?
我:有,不过我只是本科,而且还没有毕业。
猎头:你能不能把CV发给我看一下呢?
人的一生要经历无数个圈子,亲戚圈、邻居圈、同学圈、朋友圈、同事圈、户外圈、旅游圈、亲子圈、家长圈、相亲圈 …… 现在有了网络,各种新的圈子诞生,BBS论坛、Email列表、聊天工具qq/msn,SNS,微薄都是建立新圈子的工具等等。根据社交网络的理论,关系圈分强关系圈和弱关系圈。强关系是指你关注或加入的好友都是认识的人,基本上你只与熟悉的人在网络中产生互动;弱关系是指通过一些共同爱好建立关系的陌生人。saslist.net
说到圈子,市面上有本很火的书叫《圈子圈套》1,2,3,据说作者王强曾在SAS公司工作过,这本书讲的是与数据分析软件公司之间的故事,但都是关于销售职场的事情,基本上和软件编程关系不大。我也有很多同学做销售,据说很开眼界,很刺激,不是俺们这些死宅程序猿们能体验感受到的。有兴趣的可以看看,不同的世界。
因为自学SAS,我在网络上加入了很多SAS相关的圈子,比如网站,邮件列表,BBS论坛,聊天群,博客,SNS,微博。因为共同爱好SAS,所以结识了不少SAS圈子里的朋友,有不少还私底下聚会或单独见面过。可是人生都是有聚有散的,在人生的不同阶段经历了不同的见面与分别。因为是兴趣使然,所以话题离不开SAS。可惜有很多精彩的话题,没有以文字的形式保存下来。特别是在这种网络弱关系下,人聚散变得更快,话题多变而缺乏积累性。
今天翻看电脑文件,发现我保存了2010年-2011年间在老SAS圈子大家讨论的话题(已经Google不到了,新版SAS圈子地址:http://mysas.net/sns),当时那里差不多聚集了一批很活跃的SASor(有很多是高手),大家讨论着些SAS的问题。这里和大家分享一下(仅部分话题),尽管当时参与的人不多,但是很有氛围。这些问题也许对SAS新手有些帮助。
1,大家是如何发音SAS的?~ (更多…)