linux 结果导入txt,SAS学习--导入数据、执行Linux命令

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

SAS数据集、变量、常量、观测数据集:SAS可以管理的结构化数据,简单来说就是SAS软件认识的数据表,可以过程步用来数据处理,数据建模,如果说你的数据是外部文件保存,需要用SAS语言进行处理之后变成SAS数据集数据集的名称不超过32个字符

变量:简单来说就是表头,数据表每一个数据项的名称就是一个变量类型:数值型和字符型(变量名后带$)

特性:名称、类型、长度、输入格式、输出格式、标记

最多有32个字符组成,由字母、数字、下划线组成

长度默认为8

常量:固定不变,跟其他编程语言类似

观测:简单来说就是表的一行数据,在SAS里称之为观测

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

SAS代码导入

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

SAS代码导入实例导入内部数据,也就是sas代码中定义的数据,使用datalines关键字data test;

input name $ sex $ age;

datalines;

tom 男 23

jim 女 24;

run;导入txt文件数据tom 男 23

jim 女 24

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

infile "/home/sas/test.txt";

input name $ sex $ age;

run;tom/男/23

jim/女/24;

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

infile "/home/sas/test.txt" dlm='/';

input name $ sex $ age;

run;

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

tom 男 23

jim 女 24

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

infile "/home/sas/test.txt" firstobs=1;

input name $ sex $ age;

run;姓名 性别 年龄

tommmmmmmmmmmmmmmmmmmmmm 男 23

jimmmmmmmmmmmmmmmmmmmmmm 女 24

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

infile "/home/sas/test.txt" firstobs=1;

length name $20.;

input name $ sex $ age;

run;

或者是这样data test;

infile "/home/sas/test.txt" firstobs=1;

input name:$20. sex $ age;

run;

在最后介绍一下另外的两个关键字missover、dsd

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

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

SAS执行Linux命令,并返回命令执行的结果sas比较强大的地方就是可以无缝与shell进行集成衔接,这样你就可以使用shell获取到的结果进行数据处理与分析,可用到的场景非常之多,举一个例子,在sas进行io测试的时候,我们可以图形化界面显示出io测试的结果和数据,后期尝试写一个脚本出来,可以提高以后的工作效率。示例代码如下:filename cmd pipe "ls /home/sas";

data _null_;

infile cmd;

input result:$200.;

run;

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值