• SAS学习1(总体介绍以及一些程序例子)


    课程链接:https://www.bilibili.com/video/BV1PW411b7Wy?p=2&spm_id_from=pageDriver&vd_source=20efa9ffe24cc1c22dc5c11650c4c22d

    课程重点是3、4、5层
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    逻辑库相当于数据库
    在这里插入图片描述

    有一个特别的逻辑库work,内置的,被称为临时逻辑库,如果我们创建了一个数据集,但是没有指定位置,就会默认放在临时逻辑库里;重启SAS的时候,临时逻辑库中的东西就会被删掉
    特别注意:逻辑库名和物理地址的对应,是在当前会话下有效,如果退出软件,逻辑库名就会被丢掉,但是里面的数据表没有丢掉,重新打开的时候,可能创建的逻辑库名就没有了,需要重新建立链接(如果保存了工作空间的话是没有这个问题的)
    例如下面创建的mydb,重新启动sas的时候可能就不存在了,但是实际物理地址还是存在的,只不过需要重新用libname链接
    同样,删除逻辑库的时候,也只是删除逻辑库名
    在这里插入图片描述

    按照上面的步骤创建逻辑库(SAS语句结束必须加封号)
    在这里插入图片描述

    连接oracle数据库
    在这里插入图片描述

    在这里插入图片描述

    图形界面创建逻辑库
    在这里插入图片描述

    数据步:对数据进行ETL处理,e是extract,t是transform,l是load装载
    过程步:对于数据的分析、输出和展现,包括回归分析、分类、聚类等,这些通常都会写成一个sas中的标准过程,只需要直接调用就可以了
    在这里插入图片描述

    data表示数据步的开始,mydb逻辑库名,student数据集
    id name age等是变量,也就是属性;$符号表示这个变量是字符串类型的,宽度没写默认是8
    这里有四个变量,即4个列
    proc表示过程步
    print是输出过程,data指定数据集,keep指定输出的列
    在这里插入图片描述

    obs是观测的意思,相当于行
    这个输出还有时间,相当于报表,日志窗口可以看到相关信息
    在这里插入图片描述

    data表示数据步的开始,cr是数据集,放在临时逻辑库中
    sas里面的变量就是数据集里面的列
    在这里插入图片描述

    这里18后面有个小数点,表示小数点后有几位;因为这里是字符串,所以小数点后面没有数字
    id是变量,$表示是字符串变量,因为id的长度有18位,就需要写length这一句话,如果不写这一句话,则只能读8位

    input语句是指定读入数据的时候列是怎么切割的,这里是先读入id,再读入sex这一列,如果没有特别指定,分隔符就是空格,$表示sex是字符串变量
    读取过程是一次读一行,不断循环,直到run

    在cards和run之间定义了内置的数据,这些数据插入在程序中。这里是将这些数据input到sfz这个表里面

    proc过程步,print打印数据集,没有指定就是打印当前数据集
    在这里插入图片描述

    按照上面程序运行结果如下:
    在这里插入图片描述

    但是如果改了程序,没有加length,就会是下面的结果,
    需要注意的是,这里用的是新的数据集,sfzz,如果仍然是用sfz,不管怎么运行,sfz都是原来的数据,不会变化;这里暂时还不懂sas的逻辑,感觉有点奇怪
    在这里插入图片描述

    这里又多尝试了几次,首先需要注意的是,如果打开了sfz,那么再提交,就会出现如下错误;
    数据步出错了,说明改不了sfz的数据;但是过程步提交成功了,因此在输出结果的页面能看到表,而看到的表是上一次访问的表sfzz
    如果关闭了sfz数据集,然后选定程序提交,那么就会得到想要的结果
    有点麻烦。。
    在这里插入图片描述

    cdate表示变量名,等于引号里的东西,后面的d表示日期形的变量
    ctime,加上了t表示时间形的变量;
    cdatetime,后面加dt表示datetime类型的变量

    format语句用来格式化输出,10表示输出的长度,格式是yymmdd
    在这里插入图片描述

    读取文本文件中的数据
    首先指定逻辑库temp,这个文件中数据h和w用空格分开,每一行回车结束
    %let是定义宏变量,指向文本文件所在的位置
    filename,用fil这个名字来代替f1这个文件,相当于给了个名字;&f1是用了宏替换的方法;这里可以将这两句话直接写成 filename fil “c:\temp\abc.txt”
    data 在temp逻辑库下面建立一个数据集hw
    infile 读取文件中的数据
    input 读入两个列,h、w,缺省的话说明是数值形数据

    在这里插入图片描述

    下面这个文件中的数据之间是没有空格的,所以需要程序去将数据分割开
    input这里,@表示从第一个位置开始读,x1变量,3个字符长度;@4,从第四个位置读,数值型,6位;…
    这种读文本文件的方法叫做列指针控制,@加数字,表示列指针;sas中还有行指针

    在这里插入图片描述

    $1-3表示第一列到第三列,这种方法叫做列控制符号
    在这里插入图片描述

    这里的文件和前面两个不一样的地方在于,数据不是连续的,而是用逗号分割的,
    所以这里需要指定dlm
    (这里f2应该写错了,应该是f3)
    在这里插入图片描述

    用set指定要读取的数据集,是mydb.student这个数据集,file指定要写的文件
    在这里插入图片描述

  • 相关阅读:
    为什么说网络安全是风口行业?是it行业最后的红利?
    【零散技术】10分钟学会Odoo导出自定义excel报表
    11-09 周四 机器学习开发容器搭建
    IDEA中maven的设置以及相关功能
    Mybatis详解
    sqli-labs(less-8)
    以深圳为例Python一键生成核酸检测日历
    spring boot项目如何采用war在tomcat容器中运行呢?
    基于element ui 城市选择之间的级联选择
    数据库MYSQL面试篇(1)
  • 原文地址:https://blog.csdn.net/windyjcy/article/details/125829878