在统计编程的过程中,我们会用到SAS语言去实现想达到的目的。一般来说,先明确目的是什么,再考虑如何做,最后实现相应的目的,从而实现闭环。本文将介绍SAS中的笛卡尔积、逻辑运算符等知识和运用到实际编程中的实例,进而更好地了解SAS基础内容及部分统计编程工作。
(图片来源网络,侵删)
一 、笛卡尔积
在数据集中,笛卡尔积也有广泛的应用。常常用于联接操作,其中两个表的笛卡尔积被用来生成所有可能的组合,然后通过条件筛选出需要的结果。
我们可以这样来理解笛卡尔积,假设我们有两个集合:aaa和bbb。aaa是{A, B1}, bbb是{ B2,C}。那么,aaa与bbb的笛卡尔积,就是把aaa中的每一个元素,分别与bbb中的每一个元素各自配对。该集合的笛卡尔积表示了不同类别中的所有可能情况。笛卡尔积的核心是 “生产所有可能的组合”。
aaa bbb
示例:
/*做笛卡尔积*/
proc sql noprint;
create table ccc as
select * from aaa CROSS JOIN bbb
quit;
ccc
/*θ-连接,从笛卡尔积中选择出符合条件的元组。*/
proc sql noprint;
create table ccc as
select * from aaa JOIN bbb ON aaa.B1=bbb.B2;
quit;
ccc
/*左/右联接,列出左/右表中所有的元组,即使右/左表中没有可以与之相匹配的元组。*/
proc sql noprint;
create table ccc as
select * from aaa LEFT JOIN bbb ON aaa.B1=bbb.B2;
quit;
ccc
二 、逻辑运算符
SAS中的运算符是在数学,逻辑或比较表达式中使用的符号。这些符号内置到SAS语言中,并且许多运算符可以组合在单个表达式中,根据运算顺序给出最终输出。
关于在SAS中的运算次序,有以下三个准则:
1.在括号里的表达式先计算;
2.较高优先级的运算先被执行;
3.对于同一优先级的运算符,在公式左边的先被执行。
需要特殊注意的是:规则三也有特例,在公式右边的先做;
如:8**3**2=8**(3**2)
运算顺序的优先级如下:
另外,在日常编程工作中,我们还会经常用到布尔运算进行逻辑判断。
布尔运算是一种逻辑运算,逻辑运算是指对因果关系进行分析的一种运算。逻辑运算的结果并不表示数值大小,而是表示一种逻辑概念,若成立用真或1表示,若不成立用假或0表示。
knyy
示例:对研究日的处理
研究日定义:(取自SDTMIG 3.2节选)
下面是对EC域的“研究日”展开撰写:
即我们回到文章开头所言的统计编程工作中的闭环,即:目的是行业标准和具体项目所需,手段是SAS语言,结果是去验证去实现目的。
目的是什么?
根据CDISC内容表述定义“研究日”
如何做?
数学和编程之间有着密切的关系,它们互相促进和支持彼此。
数学和编程都依赖于严谨的逻辑推理和算法设计。数学培养了逻辑思维和问题解决能力,这对于编程至关重要。数学知识可以促使我们更好地了解数据结构并进行编程,同时编程也可以帮助加深对数学概念的理解。
只要我们善于发现SAS中的数学思想,就能更加灵活地运用到编程中,进而去更好地完成统计编程工作。