相关文章推荐
面冷心慈的饭盒  ·  C++ Primer学习笔记 - 第16章 ...·  1 年前    · 
独立的红豆  ·  实现前端页面局部转 pdf 及 打印 ...·  2 年前    · 
一身肌肉的茶叶  ·  hive安装配置_ITPUB博客·  2 年前    · 
坐怀不乱的乌冬面  ·  类型“any”的参数不能赋给类型“never ...·  2 年前    · 
Code  ›  SAS学习--导入导出文件、拼表、数据集筛选开发者社区
data 社区功能 sas
https://cloud.tencent.com/developer/article/1961900
干练的皮带
2 年前
作者头像
tyrantlucifer
0 篇文章

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

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > Tyrant Lucifer > SAS学习--导入导出文件、拼表、数据集筛选

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

作者头像
tyrantlucifer
发布 于 2022-03-23 15:28:06
1.9K 0
发布 于 2022-03-23 15:28:06
举报

前言

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

SAS 导出文件

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

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

SAS 数据集筛选

  • WHERE子句进行筛选

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

DATA STUDENT;
SET STUDENT;
WHERE AGE <= 10;
  • KEEP关键字

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

DATA STUDENT;
    SET STUDENT;
    KEEP 字段1 字段2 字段3;
  • DROP关键字

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

DATA STUDENT;
    SET STUDENT;
    DROP 字段1 字段2 字段3;
  • 另外的写法
DATA STUDENT;
    SET STUDENT(KEEP=);
DATA STUDENT;
    SET SUTDENT(DROP=);
DATA STUDENT;
    SET STUDENT(WHERE=);

SAS 分支语句格式

DATA _NULL_;
    IF CONDITION THEN ACTION;
DATA _NULL_;
    IF CONDITION THEN DO;
        ACTION;
        ACTION;
        ACTION;
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;

SAS 拼表

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

  • PROC SORT
PROC SORT DATA=STUDENT NODUPKEY DUPOUT=;
BY 字段名1 字段名2 字段名3;
/*PROC SORT 默认会根据第一个字段排序,然后第二个,第三个*/
    NODUPKEY:关键字可以实现去重功能
    DUPOUT=数据集名称:可以实现将重复的数据放在指定的数据集中
    BY DESCENDING:默认以升序排序,用了DESCENDING关键字则以降序排序
  • MERGE
/*left join*/
DATA STUDENT;
    MERGE A(IN=A) B(IN=B);
    BY NAME;
    IF A;
/*right join*/
DATA STUDENT;
    MERGE A(IN=A) B(IN=B);
    BY NAME;
    IF B;
/*inner join*/
DATA STUDENT;
    MERGE A(IN=A) B(IN=B);
    BY NAME;
    IF A AND B;
 
推荐文章
面冷心慈的饭盒  ·  C++ Primer学习笔记 - 第16章 模板与泛型编程 - 明明1109 - 博客园
1 年前
独立的红豆  ·  实现前端页面局部转 pdf 及 打印 加分页防止内容截断 - 掘金
2 年前
一身肌肉的茶叶  ·  hive安装配置_ITPUB博客
2 年前
坐怀不乱的乌冬面  ·  类型“any”的参数不能赋给类型“never”的参数。ts - 简书
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号