时间日期函数

分为四大类,创建类、提取类、基于日期的运算类、节日与特殊历法类

创建类(time=函数)

  • date()和today()----返回当前日期,功能上面基本上一致
  • datetime()和time()—两个函数分布返回当前日期时间与当前时间
  • MDY(month,day,year)–创建包含年月日的日期值/dhms(date,hour,minute,second)–创建包含日期与时分秒的日期时间值/hms(hour,minute,second)—创建包含时分秒的时间值

提取类

函数可以从sas时间日期值中提取想要的信息

  • 提取年月日
    year(date)/year(today())—提取日期值中的年份
    month(date)----提取日其中的月份,返回月份对应的数字
    day(date)----提取日期中的具体日期,返回日期中相对应的数字

  • 提取季度和工作日
    QTR(data)—该函数可以提取日期值中的季度
    weekday(date)----该函数可以提取日期值中的日部分是第几个工作日,每周的周日算作周一的开始

  • 提取时、分、秒
    hour(datetime or time)—该函数可以提取日期时间值中的小时部分
    minute(datetime or time)—该函数可以提取日期时间值中的分钟
    second(datetime or time)—该函数可以提起日期时间值中的秒数

  • 整体提取日期或时间部分
    datepart(datetime)-----整体提取日期部分
    timepart(datetime)----整体提取时间部分

  • week(sas-date,descriptor)–该函数可以提取日期值中的周数
    descriptor,有三个取值,u/v/w,一般情况下默认为u,u是周日作为每周的第一天而w是周一作为每周的第一天,返回都是0-53。v返回范围1-53,周一作为每周的第一天,每年的周一包含1月4号和全年第一个周四

基于日期的运算类

  • 计算两个给定日期时间值之间的间隔
intck(interval(multiple)(shift-index),start-date,end-date,<'method'>) - interval---间隔以什么单位计算(date、datetime、time、second.....),如果需要一些特定的日起算法,需要用到multiple(将interval从单一周期改变为多个) 和 shift-index(将interval的开始时间点移动到指定子周期作为新的开始时间点)
- start-date与end-date,需要与interval类型一致
- method--指计算间隔时是用连续的方法还是离散的方法(c/cont 和 D/disc表示,一般默认为D)
  • 返回与指定日期时间相隔指定间隔的日期时间值
intnx(interval(multiple)(shift-index),start-from,increment<,'aligment'>) - increment<,'alignment'>increnment 用来指定返回值与start-date之间的间隔,可以为正负或者零alignment是一个可选的参数有四个选项(beginning/middle/end/same默认为B)
  • 返回两个日期之间相差的年份,包括不满一年的部分
yrdif(start-date,end-date,<basis>)
basis- 30/360 以每个月有30天每年有360天来计算
- ACT/ACT 以实际天数来计算,闰年366天,普通年份365天
- ACT/360 和 ACT/365 以实际天数来计算,但每年按照360/365天计算
- AGE(默认值) 表示计算的是人的年龄,考虑闰年
  • 返回两个日期之间相差的天数
datdif(start-date,end-date,basis)
basis在这个函数中是必须赋值的
- 30/360---搭配公式计算天数(numberofday=(【y2-y1】*360+[m2-m1]*360+[d2-d1])
- ACT/ACT
- ACT/360
- ACT/365
如果参与计算的两个日期在同一个月,则函数开始日期计算在内而结束日期不算在计算内

节日与特殊历法类

返回一个表示指定节日在指定年份的日期值

holiday('holiday',year)- boxing-boxing day - canada-canada day- canadaobserved- christmas- columbus- columbus- easter- fathers- halloween- labor

字符函数

字符串的转换

  • upcase/lowcase—将字符串所有字母变为大写/小写
upcase/lowcase(argument)
varname=upcase/lowcase(argument);
如果函数返回的变量没有预定义长度,则变量等于argument长度
  • propcase–将字符串中的字母调整为合适的大小写
propcase(argument<,delimiters>)
将字符串中的所有字母变为小写,然后根据delimiters的值将其后的字母变为大写,默认为空格,有正斜杠,连字符,右括号,句号和制表符
  • first()—返回字符串中的第一个字符
first(string)
目标长度在data step里默认为1,如果原字符串的长度为0的话函数会返回一个空格
  • char()-返回字符串中指定位置的字符
char(string,position)
如果参数position为空则函数返回长度为0的字符串,如果position小于等于0或day字符串长度,则返回一个空格
  • treanslate()----可以替换字符表达式中指定的字符
translate(source,to-1,from-1<,...to-n,from-n>)
参数to指定用于替换的字符,参数from指定需要被替换的字符- 如果to字符小于from字符,函数将from中多余的字符转换为空格- 如果to比from字符多,忽略多出的字符
  • tranwrd()–替换字符串中出现的所有相同的子字符串
tranwrd(source,target,replacement)
单词替换,修正一些错误或不理想的输入结果时候好用
  • compare()—可以返回两个字符串第一个不同的字符的位置(从左向右),如果相同则返回0
compare(string-1,string-2<,modifier(s)>)- modifier 有4个取值范围,i l n :。- 返回的结果是正还是负取决于string1和string2中首个不同的字符串的排序更靠前,如果1 中靠前为负,如果2靠前为正

字符串的缩减

  • compbl—将字符串连续两个以及以上的空格变为一个空格
compbl(source)
varname=compbl(source);
  • compress—将指定的字符从字符串中移除
compress(source,<characters>,<modifier(s)>)
modifiers可以对函数的功能进行一些改变,A所有字符/D所有数字/I忽略需要删除字符的大小写/K保留被提及的字符而非删除/L所有小写字符/N所有字符数字以及下划线/U所有大写字符
  • trim()-可以移除字符串末尾的空格
trim(argument)
将字符串末尾的空格移除,然后返回移除空格后的字符串,如果参数设置为空白,则返回一个空格
  • trimn()-移除字符串末尾的空格,如果参数为空白则返回一个长度为零的字符串
trimn(argyment)
与trim功能相似,但是参数为空白时返回长度为0的字符串
  • strip()—可以移除字符串开头和末尾的空格
strip(string)
同时移除字符串开头和结尾的空格
  • left()/right()—使字符串左对齐/右对齐
left/right(argument)
不改变字符串长度

字符串的筛选

  • find–可以在字符串中寻找指定的子字符串
find(string,substring<,modifier(s)><,start-position>)/ find(string,substring<,start-posiition><,modifier(s)>)
string和substring 字符常量,变量或表达式
modifier有两个取值i/I t/T i表示搜索时候忽略大小写,t意味着搜索时候不考虑trailing blacks(指所有在行尾的泛空格符)
start-position-- 可以指定搜索开始的位置,正数为右负数为左
  • findc—字符串中搜索存在于character-list中的字符
findc(string<,character-list>)
findc(string,character-list<,modifier(s)>)/findc(string,character-list,modifier(s)<,start-position>)/findc(string,substring<,start-posiition><,modifier(s)>)
string-字符常量,变量或者是表达式
character-list--想搜索的字符的集合
modifier-有19个取值
  • findw–函数返回字符串中指定单词的位置或找到该单词前所有被扫描的单词的数量
findw(string,word<,character(s)>)findw(string,word,character,modifier(s)<,start-position>)/findw(string,word,character,start-position<,modifier(s)>)/findw(string,word,start-posiition<,character(s)><,modifier(s)>)word--是指定要寻找的单词character---想要选为定界符的字符列表modifier----有很多取值(如果想要使用modifier,一定要在character参数之后)
  • index—该函数可以在字符表达式中搜索指定的字符串,并返回指定字符串的第一个字母在表达式中第一次出现的位置
index(source,excerpt)
从左向右搜索,如果指定字符串没有搜索到则函数返回0
  • indexc–可以在字符表达式中搜索指定的字符,并返回该字符在字符表达式中的位置
indexc(source,excerpt-1<,....except-n>)
从左向右搜索,如果没有指定字符则返回0.且如果多个字符都出现在表达式中,则返回位置最靠前的字符在字符表达式中的位置
  • indexw—可以在字符表达式中搜索指定的单词,并返回单词第一个字符在字符表达式中的位置
indexw(source,excerpt<,delimiters>)- delimiiter 指定任意想要的字符为分隔符,如果不指定默认为空白字符
- 如果字符表达式和单词都兼有空白字符或长度为0,则函数返回1
- 如果单词仅包含空白字符或长度为0,但字符表达式包含字符或数字则函数返回位0
  • verify–该函数返回不在指定字符串中的字符在原字符串中首次出现的位置
与index相互互补
verify(source,expect-1<,expect-n>)
如果任意一个指定字符串在原字符表达式中被找到,则函数返回0
  • substr—该函数可以按长度从字符串中提取子字符串
substr(string,position<,length>)- string----要提取的字符串
- position----开始提取的位置
- length--参数可选,如果开始设置参数等于0,或者负数,或者大于字符串长度的整数,则返回指定位置到字符串结束这一段子字符,如果不设置,则返回指定位置到字符串结束这一段子字符
  • substr(left of=)—该函数可以按长度替换字符串中的字符
substr(string,position<,length>)=characters-to-replace
-如果length不指定长度,就按照以前长度进行替换
  • subpad—按照长度从字符串中提取子字符串,必要时候使用空格进行填充
subpad(string,position<,length>)
-length 不能为负数
- 如果指定的子字符串长度超过了原本字符串的末尾,则函数用空格对结果进行填充补齐所需的长度
  • substrn–按长度从字符串中提起子字符串,并且可以允许结果的长度为0
substrn(string,position<,length>)
- 如果string是数值型的,则函数会使用beast32.格式转化为字符型
- 若position的值为非正数,则返回结果会在开始处截断,使得结果中的第一个字符是原来字符串中的第一个字符
  • scan()–返回字符串中第n个单词
scan(string,count<,character-list<,modifier>>)
以character-list的值为指定的字符分隔符,寻找字符串中的第n个单词,n是count的值
- count 必须为整数,正为从左到右,负为从右到左
- character-list 用来指定分隔符,默认所有所在character-list中的字符都被认为是分隔符
- modifier 取值很多

data cleaning 函数

Any系列函数(string<,start>)

  • anyalnum–搜索alphabetic character 并返回它在字符串中的位置
  • anyalpha—搜索alphabetic character并返回它在字符串中的位置
  • anycntrl—control character 并返回它在字符串中的位置
  • anydigit—digit并返回它在字符串中的位置
  • anyfirst----搜索validvarname=v7的条件下可以作为sas变量名称的首字母的字符,并返回它在字符串中的位置
  • anygraph–搜索graphical character并返回它在字符串中的位置
  • anylower—搜索lowercase letter并返回它在字符串中的位置
  • anyname—搜索validvarname=v7的条件下可以作为sas变量名称的字符,并返回它在字符串中的位置
  • anyprint–搜索printable character 并返回它在字符串中的位置
  • anypunct–punctuation character并返回它在字符串中的位置
  • anyspace–whitepace character并返回它在字符串中的位置
  • anyupper—uppercase character并返回它在字符串中的位置
  • anyxdigit–hexadecimal character 并返回它在字符串中的位置
- string 参数表示要搜索的字符串
- start 参数表示搜索的起始位置,如果参数为空,则函数从字符串起始位置开始向右搜索,如果该参数不为空,则正数为从左向右,为负数是从右向左
- 当字符没有被找到且start指定的起始位置大于字符串长度,以及start的值为0时候,函数返回值为0

not系列函数 not(string<,start>)

  • notalnum–搜索不是alphabetic character 并返回它在字符串中的位置
  • notalpha—搜索不是alphabetic character并返回它在字符串中的位置
  • notcntrl—搜索不是control character 并返回它在字符串中的位置
  • notdigit—搜索不是digit并返回它在字符串中的位置
  • notfirst----搜索不是validvarname=v7的条件下可以作为sas变量名称的首字母的字符,并返回它在字符串中的位置
  • notgraph–搜索不是graphical character并返回它在字符串中的位置
  • notlower—搜索不是lowercase letter并返回它在字符串中的位置
  • notname—搜索不是validvarname=v7的条件下可以作为sas变量名称的字符,并返回它在字符串中的位置
  • notprint–搜索不是printable character 并返回它在字符串中的位置
  • notpunct–搜索不是punctuation character并返回它在字符串中的位置
  • notspace–搜索不是whitepace character并返回它在字符串中的位置
  • notupper—搜索不是uppercase character并返回它在字符串中的位置
  • notxdigit–搜索不是hexadecimal character 并返回它在字符串中的位置

SAS语法学习--函数系列相关推荐

  1. 2021年大数据常用语言Scala(十三):基础语法学习 函数 重点掌握

    目录 函数 重点掌握 定义函数 方法和函数的区别 方法转换为函数 完全体函数 函数 重点掌握 scala支持函数式编程,将来编写Spark/Flink程序中,会大量使用到函数 函数和我们的对象一样, ...

  2. 一、Vue基础语法学习笔记系列——插值操作(Mustache语法、v-once、v-html、v-text、v-pre、v-cloak)、绑定属性v-bind(绑定class、style)、计算属性

    一.插值操作 1. Mustache 如何将data中的文本数据,插入到HTML中呢? 我们已经学习过了,可以通过Mustache语法(也就是双大括号). Mustache: 胡子/胡须. 我们可以像 ...

  3. python导入模块的语法结构_python学习第五讲,python基础语法之函数语法,与Import导入模块....

    python学习第五讲,python基础语法之函数语法,与Import导入模块. 一丶函数简介 函数,就是一个代码块,这个代码块是别人写好的.我们调用就可以. 函数也可以称为方法. 1.函数语法定义 ...

  4. openresty开发系列14--lua基础语法3函数

    openresty开发系列14--lua基础语法3函数 一)function (函数) 有名函数: optional_function_scope function function_name( ar ...

  5. CodeMonkey过关学习笔记系列:71-85关 函数

    CodeMonkey过关学习笔记系列:71-75关 •"函数"农场 (FUNCTION FARM) 71 ~ 85 第 71 关挑战 "函数"农场step di ...

  6. [转]verilog语法学习心得

    verilog语法学习心得 1.数字电路基础知识: 布尔代数.门级电路的内部晶体管结构.组合逻辑电路分析与设计.触发器.时序逻辑电路分析与设计 2.数字系统的构成: 传感器  AD  数字处理器  D ...

  7. filter函数的用法_动态数组函数系列5| 筛选函数FILTER,单条件多条件动态筛选

    FILTER函数是筛选函数,就是在源数据中按照我们的条件筛选出我们想要的数据.除了常规的数据筛选,还可以进行多条件的"且"或者"或"的筛选. 下面我们来看看这个 ...

  8. SAS系统学习之初探

    以前在学校接触过SAS,跟着课程学习并将SAS用于统计理论的实现,学习期间断断续续,不成系统.2013年有幸参与SAS在高校举办的首次数据分析大赛,并获得"团体十强"的荣誉,之后很 ...

  9. 学习Emacs系列教程

    学习Emacs系列教程 :目录 学习Emacs系列教程(一):基本使用 学习Emacs系列教程(二):导航 学习Emacs系列教程(三):编辑(1) 学习Emacs系列教程(四):Minibuffer ...

最新文章

  1. 5.30 Tree Traversal + Tree manipulation
  2. ubuntu16.04安装ssh服务,远程登录
  3. 闭包漫谈(从抽象代数及函数式编程角度)
  4. MSSQL - 通用存储过程
  5. 选购计算机五个原则,双十一笔记本电脑推荐
  6. lisp中怎样调取图形_CAD的lisp程序已加载,怎样绘图?
  7. 子集生成算法——增量构造法
  8. 现代软件工程第六章作业
  9. 第一部分----HTML的基本结构与基本标签
  10. 主流量化交易的几种策略模型
  11. Nexus3搭建本地仓库
  12. 计算机四级网络工程师复习提纲
  13. SOLIDWORKS在机械设计行业的优势所在
  14. python如何制作exe文件_Python制作exe文件简单流程
  15. 红旗Linux9不让登录wechat,关于网页版微信无法登陆以及wechat全平台使用的问题
  16. 我用无代码表单代替群接龙,争做顶顶高效的上海团长
  17. 在线ps,修改证件照背景色
  18. 使用拉姆达表达式简化代码
  19. redis配置信息解读
  20. java根据位置信息切割图片

热门文章

  1. 消息队列/Redis - 把Redis当作队列来用,真的合适吗?
  2. uniapp 在onLaunch中使用redirectTo或reLaunch跳转页面后点击事件失效
  3. UVA-1598 交易所 题解答案代码 算法竞赛入门经典第二版
  4. 第七届“美通社新传播年度论坛”暨新传播年度大奖颁奖典礼开幕在即
  5. 盘点!项目管理软件排行榜前十名
  6. 隐藏在电影背后的神秘力量,竟然是 ta!!!
  7. 趣学Python-教孩子学编程--第七章
  8. linux格式化所有磁盘命令,【转】linux格式化磁盘命令
  9. 4 linux磁盘的格式化,linux下格式化磁盘及分区
  10. 游戏用的计算机语言,编程游戏在计算机语言中的运用分析