今天打开简书,看到一条私信。在这里说明一下,我不是每天都写文章,也就不会每天都打开简书或者公众号。所以一般都是要写文章了才会看到消息了。而且现在也不想把私人联系方式发出来了,问的问题大同小异,都是对工作和行业的理解,每天工作挺烦的,不想再添烦心事。有问题我会在文章里解答。
把他的问题分享给大家,也许不少人也有这个困惑。
第一:sas证书我觉得考不考无所谓,对工作作用不大,面试的时候人家更看重的是你的经验和对CDISC标准的理解。关键是考一门要花几千块,不划算。
第二:这行是不是很烧脑?只能说比那些互联网工作(软件开发)好一些。烧脑刚开始确实会,尤其是学习SAS Base的时候,对于刚开始学习SAS的同学,有些东西确实不好学。但是我接触过Java,python,相比它们我感觉SAS又是傻瓜式语言了。
还有到后面学习SDTM,ADaM等,也有一点困难,但是经验都是犯错和总结积累的,重要的是要有一颗主动学习的心。还有有时候我真的对这份工作厌烦,因为你得根据方案或者SPEC修改不断修改SDTM,ADaM,TFL格式等,不是说你写完一遍QC完成了就OK了,到后面得修改很多次。
我今天帮DM跑报告就鼓捣了快一天,痛苦!因为程序一开始不是我写的,是那个跑去上海的同事写的,所以有些逻辑我不太清楚,然后程序风格不一样,后面就是在他程序上修修改改,导致程序很臃肿,然后今天DM添加逻辑,就得认真去查找在哪修改,怎么修改................................................
好了,进入今天的主题,今天遇到一个小问题,突然不知道min函数取最小值的时候会不会把空值包括(要求是取非空的最小值),太久不用竟然忘了,无语.
data test;
a=.;
b=1;
c=2;
d=12;
run;
data test2;
set test;
all=min(a,b,c,d);
run;
可以看到min函数是忽略空值的。同理,man函数也是一样的。
如果我想求a+b的值,有以下两种方法
①:简单的相加,但是会报错
data test2;
set test;
ccall=a+b;
run;
因为有空值,所以SAS会报missing value的错。
所以我们需要加一个判断条件。
data test2;
set test;
if a^=. then ccall=a+b;
run;
但是这样就会算不出值
有时候并不是我们想要的结果,我们想他即使是空值也输出值,这时候就需要用到sun函数,sum是求和函数。
data test2;
set test;
ccall=sum(a,b); /*括号里面是逗号*/
run;
完美输出。大家尤其是在处理数字的时候,一定要注意不要报missing value的错
sum是横向求和,那如果我想纵向求和怎么办?
就得用到proc sql了,
proc sql的用法我以后会讲。这些做法都挺常用的。
再讲一些算术表达式(不知道是不是叫这个)的英文表达方法。
> : gt (greater than的缩写)
< : lt (less than的缩写)
= : eq (equal)
>=: ge
<=: le
^= 或者 ~= 或者 <> 或者ne :不等于
你用数学表达式或者英文写法都可以的
data test;
a=.;
b=2;
c=2;
d=12;
run;
①:大于等于
data test5;
set test;
if b ge c then cc="Y";
run;
②:不等于
data test5;
set test;
if b^=. then cc="Y"; /*注意b是数值性,不能写成^="" */
run;
就写这么多吧,想休息一下。