base SAS programming学习笔记(functions)

1.SAS function 分类:

计算描述统计量的函数:

举例如下:avgscore=mean(exam1,exam2,exam3)

2.function 基本格式

function-name(argument1,argument2,......<argumentn>)

argument可以如下:变量名;常数,表达式(192/5,mean(22,24,26));变量列表(variable lists)或向量(arrays),只要前面有OF 即可。

如下:

mean(x1,x2,x3) 或者 mean(of x1-x3)

mean(of newarray{*})

mean(x1-x3),由于前面没有OF ,sas会计算X1减去X3的均值

3.INPUT 函数和PUT函数

        INPUT函数将字符变量转换成数值变量,基本格式如下:

        input(source,informat);

        source:可以是字符变量,常值,表达式可以转成数值;informat可以是数据的读入格式,即SAS存储的。

        PUT函数将数值变量转成数值变量,基本格式如下:

        put(source,format),此处用的是format即呈现给用户的格式,该format必须适用于source;source可以是数值变量、常值、表达式。put函数返回得字符宽度则为FORMAT格式的宽度。

4.DATE或DATETIME函数处理

        SAS存储日期以1960/01/01为起点计算日期,单位天,SAS存吃日期时间以1960/01/01:00:00:00计算时间,单位秒。所以在SAS存储是以数值形式存在,可以进行数学运算;SAS日期或时间函数如下:

WEEKDAY返回日期对应实际情况是:

a.INTCK (“interval”,from,to):(计算日期间隔)

interval是间隔标识,可以是字符常值或变量,取值如下:

from是计算间隔的开始时间,to是计算间隔的结束时间。值得注意的是间隔计算的是整数间隔,而比如计算MONTH 间隔,则计算从开始日期起到结束日期间间隔多少个 1号(DAY 1);WEEK间隔是两个日期间隔有多少个星期日;年份间隔(YEAR)是两个日期间隔有多少个1月1日。开始日期含有不算。

"ddmmmyy"d或者"ddmmmyyyy"d的形式就是日期常值。

b.INTNX("interval",start-from,increment<,alignment>):

计算当前日期增加指定间隔日期后的时间

INTERVAL取值同INTCK函数,见上节。

start-from 表示开始日期.

increment,表示增加的间隔数,为正数从开始日期往未来加,为负数从开始日期往过去加;

alignment,非必须,取值有B(开始),M(中间),E(结束),S(与开始日期同一天)

c.DATIF(start_date,end_date,basis)/YRDIF(start_date,end_date,basis)

分别计算两个日期的之间的天数和年数

BASIS取值如下:'30/360','ACT/ACT','ACT/360','ACT/365';

5.字符函数

a.SCAN 函数:scan(argument,n,delimiters)

argument:字符变量或相关表达式

n规定返回第几个单词

delimiters:分隔符,可以是多个不同的分隔符

scan函数默认的分隔符有:空格< ( + | & ! $ * ) ; ^ - / , %

如:scan(name,1,"  ,")

举例如下:

结果如下:

b.SUBSTR函数:提取或替换部分字符,substr(argument,positon,<n>)

argument:字符变量或表达式

position: 开始读取字符的位置

n:是提取字符的长度,如果n缺失,则剩余的所有的字符都读取;

提取字符举例如下:

替换字符举例如下:

c.trim函数:字符变量结尾的空格字符,trim(argument)

arugment:字符变量或者字符表达式

值得注意的是TRIM不会改变字符在数据集里面的存在形式,比如将一个字符变量用trim 删除空格后赋给新的变量,只要新的变量长度大于字符长度则会存在空格

d.catx:删除字符变量前面和尾部的空格,同时用分隔符将字符变量连接起来

catx(separator,string1<,.......stringn>)

separator:分隔符;

string:字符变量

举例如下:

d.index 函数:在字符变量中找到指导字符值的位置,返回找到字符值初始位置;未找到返回0。

index(source,excerpt)

source:是字符变量或者表达式

excerpt:是需要查找的字符值,用引号引用

index(job,"word processing")

e.find 函数:同index函数类似,在字符变量或字符串找到指定字符的位置,返回找到字符值的初始位置;未找到返回0;

find(string,substring<,modifiers><,startpos>)

string:字符变量或表达式或字符串,

substring:是待查找的字符串

modifiers:非必须,修饰符,取值有"i" 查找中忽略大小写,如果不定义的话在要求精准匹配,取值为"t”用法同trim函数删除string和substring的结尾空格,可以同时使用多个修饰符  用一组引号引用起来即可

startpos:非必须,其绝对值为找寻字符串的起始位置,如果为正数则从该位置从左往右,如果为负数则从该位置从右往左,默认从左往右。

 f.upcase(argument):字符大写;lowercase(argument):字符小写。

  propcase(argument<,delimiters>):将字符变量分隔符后首字母大写。

argument:可以是字符变量或者表达式

delimiters:分隔符,默认是空格,用引号引用,默认的分隔符有:空格,斜杠(/),括号,连字符(-),点值(.)和tab,用户自定义分隔符号默认的分隔符无用。

g.tranwrd(source,target,replacement):将字符替换成指定字符

source:字符变量或字符串

target:待替换的字符串,可以是字符变量

replacement:需要替换成的字符串,可以是字符变量

举例如下:

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 18:02:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 18:02:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 18:02:04       58 阅读
  4. Python语言-面向对象

    2024-07-11 18:02:04       69 阅读

热门阅读

  1. 7.10飞书一面面经

    2024-07-11 18:02:04       24 阅读
  2. mysql bit 对gorm使用何种类型?

    2024-07-11 18:02:04       26 阅读
  3. python爬虫学习(三十三天)---多线程上篇

    2024-07-11 18:02:04       23 阅读
  4. 一、Python 日志系统设计之不同级别的系统日志

    2024-07-11 18:02:04       20 阅读
  5. SpringAMQP收发消息demo

    2024-07-11 18:02:04       20 阅读
  6. SpringSecurity中文文档(Servlet OAuth 2.0 Login)

    2024-07-11 18:02:04       19 阅读
  7. ant-design-vue表格设置某列标题部分文字颜色

    2024-07-11 18:02:04       24 阅读