• SAS学习3(对数据的简单处理、条件、循环语句、数组、datasets过程)


    在这里插入图片描述

    产生新变量

    赋值语句
    在这里插入图片描述

    这里s的初值是0,然后循环处理,一直累加,相当于s=s+x
    不要画蛇添足的写一个s=0,因为写上以后每次循环s的初值就是0,而不是累加了
    在这里插入图片描述

    这里每次循环z赋值为0,所以每次和x一样
    s是上面讲过的累加
    retain y 8 是给y赋初始值8,然后开始累加x,但是下次循环的时候,y的值不会重置,retain这条语句不会执行,所以就有y和s相差8的情况
    retain语句可以代替求和语句,并且给数据赋初值
    在这里插入图片描述

    删除变量

    drop把三个列删除掉,目标数据集中不会写入,但是中间运算过程中变量是可以使用的
    在这里插入图片描述

    drop以后,输出不显示,数据集中也不会写入
    在这里插入图片描述

    保留变量

    保留指定变量,其他变量不写入
    在这里插入图片描述

    条件语句

    mean计算平均值
    每个观测值都会执行if语句,
    put是输出语句,跟print的区别在于put是将输出值输出在日志窗口,而不是在输出窗口
    在右边看到输出窗口都输出了,日志窗口只有if以后的
    在这里插入图片描述

    if 满足条件,then执行,否则else执行
    在这里插入图片描述

    忽略首行的变量描述 _N_
    在这里插入图片描述

    在这里插入图片描述

    用if语句创建子数据集

    在这里插入图片描述

    删除行

    由于这里if后面的语句不止一条,所以这里不能直接写
    需要写do加上end,将这几句话框起来,相当于java中的{}

    这里的of(查到的):
    这些函数的调用方法类似其它语言,比如求x1,x2,x3三个自变量的和可以用函数SUM(x1,x2,x3) 。另外,SAS还提供了函数调用的另一种语法以便于把多个数据集变量作为函数自变量,其格式为“函数名(OF 变量名列表)”,其中变量名列表可以是任何合法的变量名列表,比如x1 ,x2,x3的和等价地可以用SUM(OF x1 x2 x3)或SUM(OF x1-x3)表示。注意两种写法不能混在一起,比如SUM(OF x1,x2,x3)和SUM(x1-x3)都是错的。

    关键应该是把多个数据集变量作为函数自变量,变量名列表写的时候中间没有逗号
    在这里插入图片描述

    循环语句

    在这里插入图片描述

    goto不建议使用
    这里两个@@符号可以看到也可以用在输出中,表示不换行
    在这里插入图片描述

    其实就是for循环
    c是1到8,步长是2;后面13表示也可以取13,16,17,18也可以取到
    put c= 可以看到输出的是C=数字,这种形式
    在这里插入图片描述
    在这里插入图片描述

    这个数据步没有input,也没有datalines,所以循环结束就会终止
    结束以后,会自动创建一个数据集,写入n=5,只有一个观测值
    在这里插入图片描述

    output

    output会将每次循环的观测值写入数据集

    但是可以看到和上一个程序的差别,这里n没有把5写入数据集中
    只有在数据步中存在output,数据步就不会产生自动写入的操作,只有output的时候才回去执行写入的动作
    也就是只有output会显示的写入,而不会隐式的自动写入
    在这里插入图片描述

    do until是条件成立的时候退出循环
    但是这里可以看到,循环还是执行了一次,这就相当于until是写在循环体最后面的
    在最后面判断循环是否进行
    所以这里仍然会进行一次执行
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    数组

    sas中的数组相当于变量的别名
    可以通过下标来对数组中的变量进行控制

    创建数组:
    ARRAY test[8] 变量名
    表示创建8个变量的数组,分别对应
    取元素的时候可以用小括号或者大括号
    在这里插入图片描述

    例子
    在这里插入图片描述

    这里在创建数组的时候赋予了初始值
    input中test[*]读入test数组
    在这里插入图片描述

    多维数组

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    数据集连接

    在列的方向上进行合并
    当各个表中变量结构完全相同的时候,直接连接

    当结构不同的时候,会将没有的值赋空值
    在这里插入图片描述

    合并

    就是行的方向上合并

    一对一合并就是直接将观测值一行行合并,其实大部分情况下没什么意义
    在这里插入图片描述

    匹配合并
    在这里插入图片描述

    首先产生两个数据集
    在这里插入图片描述
    在这里插入图片描述

    排序以后合并
    先排序是为了合并更加效率
    sas中没有索引的概念
    在这里插入图片描述

    输出语句

    put

    在这里插入图片描述

    @y表示在y的位置上输出x,后面的@的表示不换行
    输出一行以后,写一个put表示换行
    在这里插入图片描述

    file

    给文件中写数据
    在这里插入图片描述

    file指定输出的文件
    print是表示输出窗,这里也可以是log,表示日志窗
    也可以是文件名,表示写到具体文件中
    n=ps表示行号可以控制

    在这里插入图片描述
    在这里插入图片描述

    output

    在这里插入图片描述

    目标数据集有两个
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    datasets过程

    在这里插入图片描述

    在这里插入图片描述

    append

    在这里插入图片描述

    modify

    配合后面的语句使用
    在这里插入图片描述

    format

    在这里插入图片描述

    informat

    在这里插入图片描述

    label

    rename

    在这里插入图片描述

  • 相关阅读:
    【LeetCode热题 100】三数之和
    学习笔记 - PLE
    golang中大括号的问题
    二次开发真的很难吗?低代码平台有话说
    Spring Boot 2020 官方基础68课程第24个Spring Boot and OAuth2
    el-dialog设置对话框高度,禁用点击关闭对话框
    大白话讲解MySQL 索引,页分裂,行溢出,事务
    不断完成新项目才能升职?前首席工程师“怒喷”谷歌晋升机制
    Java使用JavaMail进行邮件的发送和读取
    【prometheus学习过程】
  • 原文地址:https://blog.csdn.net/windyjcy/article/details/127692825