前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAS学习--导入导出文件、拼表、数据集筛选

SAS学习--导入导出文件、拼表、数据集筛选

作者头像
tyrantlucifer
发布2022-03-23 15:28:06
2.9K0
发布2022-03-23 15:28:06
举报
文章被收录于专栏:Tyrant LuciferTyrant Lucifer

前言

目前项目进行到中期,最近又学习了一些新的知识,例如sas拼表、导出文件、数据集筛选等,好记性不如烂笔头,记录下来有待后期回头查看,人生总是走在学习的道路上。

SAS 导出文件

SAS将数据集导出为文件有两种方法,一种使用PROC EXPORT,另外一种是使用DATA

  • proc export
代码语言:javascript
复制
PROC EXPORT DATA=DATA_SET OUTFILE="/sas/data_set.txt" DBMS=TAB REPLACE;
DELIMITER="|";
PUTNAMES=NO;
RUN;
/*
    DATA:指定要导出的数据集
    OUTFILE:指定要导出的文件
    DBMS:指定导出文件类型,文本文件为TAB CSV文件为CSV
    REPLACE:文件覆盖选项
    DELIMITER:指定文件的分隔符
    PUTNAMES:指定是否输出表头
*/
  • data
代码语言:javascript
复制
FILENAME DATA_SET "/sas/data_set.txt";
DATA _NULL_;
SET DATA_SET;
FILE DATA_SET LRECL=32767 DLM="|" ENCODING="UTF-8" TERMSTR=CRLF;
PUT
NAME AGE CLASS_NAME;
RUN;
/*
    LRECL:指定读入记录的长度,默认是256
    DLM:指定分割符
    ENCODING:指定文件编码
    TERMSTR:指定记录分隔符
*/

SAS 数据集筛选

  • WHERE子句进行筛选

SAS 数据集筛选可以在DATA步中进行操作,使用WHERE关键字对指定的列的值进行条件筛选,例子如下:

代码语言:javascript
复制
DATA STUDENT;
SET STUDENT;
WHERE AGE <= 10;
RUN;
  • KEEP关键字

KEEP关键字可以使数据集保留下你想要的字段,比如一个表里边有五个字段,你只想保留三个字段,则使用KEEP关键字进行过滤

代码语言:javascript
复制
DATA STUDENT;
    SET STUDENT;
    KEEP 字段1 字段2 字段3;
RUN;
  • DROP关键字

DROP关键字可以丢掉你不想要的字段

代码语言:javascript
复制
DATA STUDENT;
    SET STUDENT;
    DROP 字段1 字段2 字段3;
RUN;
  • 另外的写法
代码语言:javascript
复制
DATA STUDENT;
    SET STUDENT(KEEP=);
RUN;

DATA STUDENT;
    SET SUTDENT(DROP=);
RUN;

DATA STUDENT;
    SET STUDENT(WHERE=);
RUN;

SAS 分支语句格式

代码语言:javascript
复制
DATA _NULL_;
    IF CONDITION THEN ACTION;
RUN;

DATA _NULL_;
    IF CONDITION THEN DO;
        ACTION;
        ACTION;
        ACTION;
    END;
RUN;

DATA _NULL_;
    IF CONDITION THEN ACTION;
        ELSE IF CONDITION THEN ACTION;
        ELSE IF CONDITION THEN ACTION;
        ELSE IF CONDITION THEN ACTION;
    ELSE CONDITION THEN ACTION;
RUN;

SAS 拼表

SAS 拼表过程十分简单,拼表意思就是表A和表B有共同的列,将表根据相同的列拼在一起,跟SQL中的left join和right join还有inner join是一个道理,在拼表之前需要将数据集根据公共的字段排序,需要用到PROC SORT,下面介绍一下PROC SORT

  • PROC SORT
代码语言:javascript
复制
PROC SORT DATA=STUDENT NODUPKEY DUPOUT=;
BY 字段名1 字段名2 字段名3;
/*PROC SORT 默认会根据第一个字段排序,然后第二个,第三个*/
RUN;

/*
    NODUPKEY:关键字可以实现去重功能
    DUPOUT=数据集名称:可以实现将重复的数据放在指定的数据集中
    BY DESCENDING:默认以升序排序,用了DESCENDING关键字则以降序排序
*/
  • MERGE
代码语言:javascript
复制
/*left join*/
DATA STUDENT;
    MERGE A(IN=A) B(IN=B);
    BY NAME;
    IF A;
RUN;
/*right join*/
DATA STUDENT;
    MERGE A(IN=A) B(IN=B);
    BY NAME;
    IF B;
RUN;
/*inner join*/
DATA STUDENT;
    MERGE A(IN=A) B(IN=B);
    BY NAME;
    IF A AND B;
RUN;

/*
    MERGE:表A(IN=A) 表B(IN=B)
    BY 后面跟两个表共有的主键
    IF 后面跟表关联关系
*/
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Tyrant Lucifer 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • SAS 导出文件
  • SAS 数据集筛选
  • SAS 分支语句格式
  • SAS 拼表
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档