ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SAS初学者笔记---003---利用数据步读取数据--从文件中读取数据

2021-01-01 22:35:18  阅读:191  来源: 互联网

标签:003 读取数据 文件 --- 导入 sas 数据 读取


在这里插入图片描述
接上一篇文章,接下来开始介绍从文件中读取数据

从文件中读取数据

虽然说从文件中读取数据的本质上都是INFILE语句的使用,但是作为小白玩家,掌握从文件窗口直接导入数据还是很有必要的。
接下来就开始吧。

从窗口导入文件

本标题所指窗口,意为sas软件的窗口,如下红色箭头所指
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

LOG窗口出现如下字样时提示文件导入成功
在这里插入图片描述
以上便是导入的数据
在这里插入图片描述
变量读取时出现了一个小错误,目前我还不太清楚是为什么,希望走过路过的大佬能指点一下

另外,在导入时需要确定你的sas版本所支持的数据格式,如笔者使用的sas版本为9.1.3,如图可见其支持以上格式的数据,
选中格式进行文件导入后,一般会进行两步

  • 确定待导入文件的位置(路径)
  • 确定sas文件保存路径
    一般来说,数据经过这两部都能成功的导入到数据集中,但前提是你的数据格式能满足导入需求。多数情况会遇到以下问题:
  • sas不支持数据的格式,这个问题需要通过外部软件将数据文件进行转码成相应的格式,例如xls文件转为csv文件
  • 导入后生成的数据集有乱码、缺失值、行列信息错误,这个需要根据生成的sas文件特定地修改代码
  • 导入超大型文件,这个问题比较重要,笔者会单独写一篇文章讲述

INFILE语句的用法

还记得我们在上述操作中保存的sas文件吗,让我们打开来看看

PROC IMPORT OUT= WORK.STUDENT1 
            DATAFILE= "D:\sas\笔记\student1.csv" 
            DBMS=CSV /*提示文件类型为CSV*/ REPLACE /*替换同名文件*/;
     GETNAMES=YES; 
     DATAROW=2; 
RUN;

这里用到了IMPORT语句读取文件,同时我们可以用INFILE语句读取此csv文件

分隔符及选择读取

在这里插入图片描述

DLM 指示文件分隔数据的方式,如csv文件使用逗号分隔数据,xls文件使用制表符(tab)分隔数据
FIRSTOBS=2 指示从第二行开始读取数据(区别与通常认识的编程语言,以0 1 2 3的方式排序,懂的都懂)
OBS=10 指示数据读取从第十行结束

FLOWOVER TRUNCOVER MISSOVER PAD 的使用方法

之前有提到过按列读取数据的代码,如下所示
在这里插入图片描述
同样的,我们用INFILE语句来读取这一类型数据
在这里插入图片描述

FLOWOVER

在这里插入图片描述
对比一下在数据阵列中读取,是不是哪里不太对劲
这提示我们sas使用INFILE读取数据时,默认的读取方式是FLOWOVER,这个和之前写到的有关INPUT读取变量的逻辑有一点相似
情况是这样的:
程序按照指定格式从文件中读取变量,当本行数据无法满足某变量的读取要求时(如长度不足),程序就会从下一行数据中读取此变量。这样就可以解释以上现象,这也是FLOWOVER的含义

MISSOVER

在这里插入图片描述
MISSOVER的含义是:读取变量时若某变量的读取无法被满足,则将此变量标记为空值,而不是从下一行数据中读取变量,但是city变量中只有长度最长的chongqing被读取到了,其他未读满的值都被标记为了空值

PAD

如果在代码中加入pad语句
在这里插入图片描述
情况一下就明朗了,PAD的原理是在读取数据时在每一行尾用空格补齐数据至最长,所以可见数据被完整的读取出来了,文件中未被指示的数据即被读取成了空值。
但是,问题又来了,如果不按列读取会怎么样?
在这里插入图片描述

果然,数据读取又出现了错误。细心的朋友可能会观察到和最开始讲述FLOWOVER的原理时所指示的结果十分相似,我们或许可以试试再加上MISSOVER语句。
在这里插入图片描述
可以看到在联用了MISSOVERPAD语句后,数据读取又变成了我们想要的样子。可见 PAD语句是不会阻止FLOWOVER语句生效的,但是MISSOVER会。

TRUNCOVER

事实上上述案例也就是TRUNCOVER功能的拆分,如下
在这里插入图片描述
上述文件中未调整city变量的长度,所以会出现读取不全的结果,请谅解,谢谢

小结

本节介绍了如何从文件中读取数据,下一节将介绍如何建立逻辑库、读取已生成的数据、对变量的删改等操作
本文参考了 imasaor的博文-终于总结了一下,truncover,missover, pad选项的意义,以及读取datalines和外部文件的不同。
(考完就发下一节,大概。。)

标签:003,读取数据,文件,---,导入,sas,数据,读取
来源: https://www.cnblogs.com/wrenb/p/14221110.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有