EN
【技术】SAS中蕴含的数学小巧思
2024-07-22 16:25

 在统计编程的过程中,我们会用到SAS语言去实现想达到的目的。一般来说,先明确目的是什么,再考虑如何做,最后实现相应的目的,从而实现闭环。本文将介绍SAS中的笛卡尔积、逻辑运算符等知识和运用到实际编程中的实例,进而更好地了解SAS基础内容及部分统计编程工作。

封面.jpg

(图片来源网络,侵删)

  一  、笛卡尔积

在数据集中,笛卡尔积也有广泛的应用。常常用于联接操作,其中两个表的笛卡尔积被用来生成所有可能的组合,然后通过条件筛选出需要的结果。

我们可以这样来理解笛卡尔积,假设我们有两个集合:aaa和bbb。aaa是{A, B1}, bbb是{ B2,C}。那么,aaa与bbb的笛卡尔积,就是把aaa中的每一个元素,分别与bbb中的每一个元素各自配对。该集合的笛卡尔积表示了不同类别中的所有可能情况。笛卡尔积的核心是 “生产所有可能的组合”。

aaa.png                     bbb.png

aaa                                           bbb

示例:

/*做笛卡尔积*/

proc sql noprint;

   create table ccc as

        select * from aaa CROSS JOIN bbb

quit;

ccc.png

ccc


/*θ-连接,从笛卡尔积中选择出符合条件的元组。*/

proc sql noprint;

 create table ccc as

select * from aaa JOIN bbb ON aaa.B1=bbb.B2;

quit;

ccc1.png

ccc


/*左/右联接,列出左/右表中所有的元组,即使右/左表中没有可以与之相匹配的元组。*/

proc sql noprint;

   create table ccc as

      select * from aaa LEFT JOIN bbb ON aaa.B1=bbb.B2;

quit;

ccc2.png

ccc

 二  、逻辑运算符

SAS中的运算符是在数学,逻辑或比较表达式中使用的符号。这些符号内置到SAS语言中,并且许多运算符可以组合在单个表达式中,根据运算顺序给出最终输出。

关于在SAS中的运算次序,有以下三个准则:

1.在括号里的表达式先计算;

2.较高优先级的运算先被执行;

3.对于同一优先级的运算符,在公式左边的先被执行。

需要特殊注意的是:规则三也有特例,在公式右边的先做;

如:8**3**2=8**(3**2)

运算顺序的优先级如下:

1.png

另外,在日常编程工作中,我们还会经常用到布尔运算进行逻辑判断。

布尔运算是一种逻辑运算,逻辑运算是指对因果关系进行分析的一种运算。逻辑运算的结果并不表示数值大小,而是表示一种逻辑概念,若成立用真或1表示,若不成立用假或0表示。

微信图片_20240521114338.png

knyy.png

knyy

示例:对研究日的处理

研究日定义:(取自SDTMIG 3.2节选) 

111.png

下面是对EC域的“研究日”展开撰写:

yanjiuri.png

yanjiuri 22.png

即我们回到文章开头所言的统计编程工作中的闭环,即:目的是行业标准和具体项目所需,手段是SAS语言,结果是去验证去实现目的。

目的是什么?

根据CDISC内容表述定义“研究日”

如何做?

微信图片_20240521115401.png

数学和编程之间有着密切的关系,它们互相促进和支持彼此。

数学和编程都依赖于严谨的逻辑推理和算法设计。数学培养了逻辑思维和问题解决能力,这对于编程至关重要。数学知识可以促使我们更好地了解数据结构并进行编程,同时编程也可以帮助加深对数学概念的理解。

只要我们善于发现SAS中的数学思想,就能更加灵活地运用到编程中,进而去更好地完成统计编程工作。

我们如何帮您呢?凯莱英临床(凯诺)专业团队为您尽快提供服务