数学建模社区-数学中国

标题: 如何用SAS读取用空格分隔的数据 [打印本页]

作者: 花映碧水    时间: 2013-12-29 10:52
标题: 如何用SAS读取用空格分隔的数据
本帖最后由 花映碧水 于 2013-12-29 13:29 编辑
; v. X/ j  }7 q7 D6 B0 [+ K: h
- D$ f8 c+ N  Z3 N/ m0 N在此首先非常感谢会员“奚鑫”提供资源,为方便大家观看,特此将全文转载到数学中国方便大家直接查阅~
* F2 E5 a3 W9 X/ O5 p2 P$ P+ `  l) Y. w" [7 ?
除了EXCEL文件之外,我们在数据分析中还会经常接触到各种各样格式的数据源,比如,分隔符分割的文本数据,定长的文本数据。对于不同格式的数据通常采用不同的方式进行读取,因此,我们首先要明确将要读取的数据是什么样子的,这需要与数据的提供方进行确认。
需要与数据提供方确认的内容:
1.文件的类型,是文本文件还是其他文件;
2.字段分隔的方式,是以分隔符分隔的还是定长的;
3.字段的格式,是字符型、数值型还是时间日期型。
只有明确了数据是什么样子的,我们才能够编写代码导入相应的数据,明确需求是开始工作之前必须要做的事情。
这次只和大家分享如何读取最简单的数据类型——空格分隔的文本数据。
经过确认,需求如下:
在D盘的根目录下存放了名为myfile.txt的文本文件,该数据是由四个字段组成,分别是IdNumber,Name,Team,Weight,其中Weight为数值型变量,其余都为字符型变量,各个字段间以空格分隔。
需要把该文件的内容导入到名为club的数据集中。
文件的内容如下:
1023 David red 189
1049 Amelia yellow 145) U8 j3 _' J7 ?
编写如下代码完成上面需求:
data work.club;
infile "D:\myfile.txt";
0 ]3 |5 i& ?# r# C/ }# s   input IdNumber $ Name $Team $ Weight;+ y) b+ L/ j0 h5 }
run;
代码说明:
上面的代码为SAS的数据步。
data:关键字,用于说明数据步的开始;
work.club:生成要保存的数据集名称;
infile:infile语句,后面接的是文本文件的路径和名称;
input:后面接的是要导入字段的名称和格式,其中字段名后接符号$代表该字段为字符型,不做说明为数值型;
run:提交上面的语句。
补充说明:
SAS里面包含了数据步和过程步,关于什么是数据步和过程步以后会说明。
infile语句对应input语句。可以理解成从infile(输入文件)里input(读取)数据。

, ~" l( B% N6 K( p* p: {1 l' F% T9 e3 J+ Z$ z2 _6 X2 w

作者: 奚鑫    时间: 2013-12-29 11:19
为什么没有经过我的同意就复制不的文章呢?
作者: 奚鑫    时间: 2013-12-29 11:30
为什么没有经过我的同意就复制我的文章,还删掉我的帖子,把别人写的东西当成是你写的?
作者: 花映碧水    时间: 2013-12-29 13:37
奚鑫 发表于 2013-12-29 11:30
+ |  Z0 V2 _9 Q: d$ y/ H7 X" |为什么没有经过我的同意就复制我的文章,还删掉我的帖子,把别人写的东西当成是你写的?

0 y- }9 i2 F- A4 U; J. K, w9 D" ?6 J首先你得帖子没有被删除,删除的话,你也会收到信息~其次我也没有权限给你删除~将你的资料转载到此的原因有:1.数学中国不接受站外个人链接~   2.网站不接受类似推销自己的模式存在~  3. 帖子内容我已经声明~
作者: 奚鑫    时间: 2013-12-29 14:10
我只是希望大家能够珍惜别人的劳动成果,当花了几个小时写完了一篇文章后发现作者换成了别人,你的感想会是什么?之所以发的是链接,不知到你有没有认真写过文章,加高亮,调格式会花多长时间。跟别人分享知识就得在论坛里面重新写一遍?分享链接的目的是创造一个和大家一起交流的机会,如果对我提供的方法有疑问可以在帖子下面提问,一起交流。还有一点不明白,刚刚查了,我的帖子是没有被删除,但是发帖时间从2013年变成了2011年,真的不知道是什么情况。
作者: 本世界的大人    时间: 2015-9-8 10:14
谢谢分享,好好学习。。。。。
6 Z( `  B1 Z9 Y0 s




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5