前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAS学习--导入数据、执行Linux命令

SAS学习--导入数据、执行Linux命令

作者头像
tyrantlucifer
发布2022-03-23 14:49:01
1.8K0
发布2022-03-23 14:49:01
举报
文章被收录于专栏:Tyrant Lucifer

前言

在SAS中国也已经待了有一段时间,经过这么久的熏陶我对SAS语言还不是很熟悉,平时的时间也没有太过深入的去进行学习SAS语言,前几天去中国银行客户现场,也总算接触到了一点SAS语言的皮毛,今天就算是一个引子吧,准备在博客开一个学习SAS语言的专栏,一是来记忆一下学到的知识点,俗话说好记性不如烂笔头,二是积累一下自己的技能,为后面的工作做铺垫,人生总是走在学习的路上。

SAS数据集、变量、常量、观测

  • 数据集:SAS可以管理的结构化数据,简单来说就是SAS软件认识的数据表,可以过程步用来数据处理,数据建模,如果说你的数据是外部文件保存,需要用SAS语言进行处理之后变成SAS数据集
  • 数据集的名称不超过32个字符
  • 变量:简单来说就是表头,数据表每一个数据项的名称就是一个变量
  • 类型:数值型和字符型(变量名后带$)
  • 特性:名称、类型、长度、输入格式、输出格式、标记
  • 最多有32个字符组成,由字母、数字、下划线组成
  • 长度默认为8
  • 常量:固定不变,跟其他编程语言类似
  • 观测:简单来说就是表的一行数据,在SAS里称之为观测

SAS导入数据的几个方法

  • 图形化界面导入(在数据不大的时候可以去用图形化界面进行导入,这里不过多赘述)
  • SAS代码导入

本次工作的目标

本次的工作目标是用SAS脚本把客户的外部数据导入到SAS软件中

SAS代码导入实例

  1. 导入内部数据,也就是sas代码中定义的数据,使用 datalines关键字
代码语言:javascript
复制
data test;
    input name $ sex $ age;
    datalines;
    tom    男 23
    jim    女 24;
run;
  1. 导入txt文件数据
代码语言:javascript
复制
tom    男 23
jim    女 24

假设txt文件内容如上图所示,分隔符为空格

代码语言:javascript
复制
data test;
    infile "/home/sas/test.txt";
    input name $ sex $ age;
run;
tom/男/23
jim/女/24;

假设txt文件内容如上图所示,分隔符为/

代码语言:javascript
复制
data test;
    infile "/home/sas/test.txt" dlm='/';
    input name $ sex $ age;
run;

dlm这个参数可以指定分隔符,但前提是分隔符只有一个字符,如果分隔符是多个字符的话,则需要用 dlmstr参数指定

代码语言:javascript
复制
姓名 性别 年龄
tom    男 23
jim    女 24

假设txt文件内容如上图所示,第一行有表的变量名称,我不想读进去,这时候用 firstobs这个参数,指定SAS从哪一行开始读,同时 obs这个参数还可以控制读到多少行

代码语言:javascript
复制
data test;
    infile "/home/sas/test.txt" firstobs=1;
    input name $ sex $ age;
run;
姓名 性别 年龄
tommmmmmmmmmmmmmmmmmmmmm 男 23
jimmmmmmmmmmmmmmmmmmmmmm 女 24

假设txt文件内容如上图所示,姓名已经超过了默认的8个长度,为了完整的导入数据,这时我们可以用 length这个关键字,去进行定义这个变量的长度,或者在input语句中使用 :去定义长度,所以代码可以是这样

代码语言:javascript
复制
data test;
    infile "/home/sas/test.txt" firstobs=1;
    length name $20.;
    input name $ sex $ age;
run;

或者是这样

代码语言:javascript
复制
data test;
    infile "/home/sas/test.txt" firstobs=1;
    input name:$20. sex $ age;
run;

在最后介绍一下另外的两个关键字 missoverdsd

missover的作用是,如果txt文件一行数据不够时,告诉sas不要跳到下一行进行读取,简单来说就是保证读取数据不会串行

dsd的作用是,忽略用引号括起来数据中的分隔符,假设数据是用 ,进行分割,数据项是 china,beijing,为保证该行数据能完整被读入,需要使用 dsd

SAS执行Linux命令,并返回命令执行的结果

sas比较强大的地方就是可以无缝与shell进行集成衔接,这样你就可以使用shell获取到的结果进行数据处理与分析,可用到的场景非常之多,举一个例子,在sas进行io测试的时候,我们可以图形化界面显示出io测试的结果和数据,后期尝试写一个脚本出来,可以提高以后的工作效率。

示例代码如下:

代码语言:javascript
复制
filename cmd pipe "ls /home/sas";
data _null_;
infile cmd;
input result:$200.;
run;

未完待续

本次只是提到了txt文件,后续还有csv、excel文件,下次更新~~~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • SAS数据集、变量、常量、观测
  • SAS导入数据的几个方法
  • 本次工作的目标
  • SAS代码导入实例
  • SAS执行Linux命令,并返回命令执行的结果
  • 未完待续
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档