SAS入门2回顾:
1、proc format语句:
invalue<$>格式名 变量或范围=输入格式;
value<$>格式名 变量或范围=输出格式;
2、设置变量长度:length语句(由第一个变量的值决定)
例:
data eva;
length bonus $5.;
input id g bonus$;
if g<70 then eva="合格"; elseeva="不合格";
eva=bonus;
cards;
注:“字符变量一旦产生,它的长度就无法改变”。
一、与数值有关的函数
mod(x,y) 返回x除以y的余数
abs(x) 返回x的绝对值
exp(x) 返回x的指数值
log(x) 返回x的自然对数值
log10(x) 返回x的以10为底的对数值
sqrt(x) 返回x的平方根
ceil(x) 返回≥x的最小整数
floor(x) 返回≤x的最大整数
int(x) 返回x的整数部分
例:
data aa;
input x;
sx=sqrt(x); lx=log(x);
cards;
二、与统计有关的函数
函数(x1,x2,x3,…xn)或函数(of x1-xn)
例:
三、与字符有关的函数
1、更改字母大小写
upcase(变量或字符串); 作用是将所有字母改为大写。
lowcase(变量或字符串); 作用是将所有字母改为小写。
例:gender=lowcase(gender);
2、变量或字符串的连接:
例:
3、计算变量或字符串的长度:
lengthn(变量或字符串)、空值返回为0
例:
data code;
input name&:$50. gender:$;
len1=lengthn(name);
len2=lengthn(gender);
4、提取变量或字符串中的字符
substrn(变量,起始位置,提取长度)
例:
5、查找变量或字符串中的字符
find(变量或字符串,查找内容,起始位置) /*忽略大小写,所有字符完全匹配*/
findc(变量或字符串,查找内容,起始位置)/*忽略大小写,部分字符匹配*/
例:
type1=find(tp,"int","i"); /*在变量tp中查找完整的int,忽略大小写*/
type2=findc(tp,"int","i"); /*在变量tp中查找int中任一字母,忽略大小写*/
6、去除变量或字符串中的字符
ccompress(变量或字符串,欲去除的字符,修饰符)
四种修饰符:
a,去掉变量或字符串中的所有字母
d,去掉变量或字符串中的所有数字
s,去掉变量或字符串中的所有空格
i,忽略大小写
7、替换变量或字符串中的字符
tranwrd(变量或字符串,查找值,替换值)
例:
input id dose&:$30.; /*dose变量包含空格,因此加上&符号*/
dose1=tranwrd(dose,"口服","PO"); /*将“口服”替换为“PO”*/
cards;
8、查找缺失值
missing(变量)/*”是“--->1 ; "不是"-->0
例:
mgender=missing(gender); /*判断gender是否有缺失*/
mage=missing(age); /*判断age是否有缺失 */
四、与日期有关的函数
1、日期的提取与整合
例:
2、日期间隔函数
yrdif(开始日期,结束日期,“actual")
例:life=yrdif(start,end); /*计算两个日期之间的实际年数 */
五、与变量类型转换有关的函数
input(变量,输入格式) /*字符型变量-->数值型*/
put(变量,输出格式)/*数值型变量-->字符型*/
例:
input sn:$10. d1:$10. d2:$10.;
sn2=input(sn,10.); /*将sn按长度为10的格式转为数值型 */
date1=input(d1,yymmdd8.); /*将d1按yymmdd8.的格式转为数值型 */
date2=input(d2,date9.); /*将d2按date9.的格式转为数值型*
proc contents; /*显示数据集convert中的变量类型*/
六、其它函数
以下两个函数在处理动态数据、追踪数据方面几乎是必备的,如计算环比。
1、lag函数 :
返回指定变量的前一个(或前几个)记录;
2、dif函数:
返回当前记录与前一个(或前几个)记录的差值。