楼主: DriftKingHan
2044 4

[问答] 请教DATALNES和INFILE在读取数据时的区别 [推广有奖]

  • 4关注
  • 0粉丝

博士生

85%

还不是VIP/贵宾

-

威望
0
论坛币
65 个
通用积分
166.4668
学术水平
10 点
热心指数
11 点
信用等级
4 点
经验
36781 点
帖子
140
精华
0
在线时间
576 小时
注册时间
2010-10-15
最后登录
2024-3-12

楼主
DriftKingHan 发表于 2016-10-30 17:14:03 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
在看到论坛上一个帖子,https://bbs.pinggu.org/thread-4910871-1-1.html
一开始自己是用DATALINES测试的,但是发现DATALNES和INFILE读取数据的结果是不同的
比如数据如下
1
22
333
4444
55555


  1. data test;
  2.         infile mydata;
  3.         input x 5.;
  4. run;
  5. proc print data = test;
  6. run;
复制代码
用上面这段读取的时候,会因为record不够长,导致有数据缺失
结果如下图
1.JPG

但是用DATALINES读取的时候,结果就不一样了,竟然是完整的
请教一下,这到底是为什么呢,读取instream数据和外部数据有什么不同吗?
谢谢了
  1. data test;
  2.         input x 5.;
  3. datalines;
  4. 1
  5. 22
  6. 333
  7. 4444
  8. 55555
  9. ;
复制代码
2.JPG

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:infile 读取数据 file Data NFI record

沙发
DriftKingHan 发表于 2016-10-31 20:54:46
求大神指点迷津
谢谢了

藤椅
mich_ard 发表于 2016-11-2 03:42:01
这是两者的格式结构不同导致的。具体的讲就是,DATALINES的格式结构有固定的长度80bytes,无论你的数据是 1还是10000,其实后面都有空格填充到80。所以你的第2个数据集能够完整输入。
相反,infile文件的格式结构不是固定的,而是可变的,它总是和你的数据一样长。由于你x变量长度为5,比你的几个短数据长,导致必须串行读取数据以满足长度 5 。如果你取消x的长度5,或用其他长度试试,会帮你进一步了解。
另外,了解pad语句会有帮助。hope this helps。
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
DriftKingHan + 2 + 2 + 2 + 2 热心帮助其他会员

总评分: 论坛币 + 2  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

板凳
DriftKingHan 发表于 2016-11-2 23:38:32
mich_ard 发表于 2016-11-2 03:42
这是两者的格式结构不同导致的。具体的讲就是,DATALINES的格式结构有固定的长度80bytes,无论你的数据是 1 ...
了解了,非常感谢
DATALINES相当于INFILE加上了PAD选项,是吧

报纸
mich_ard 发表于 2016-11-3 00:45:14
是的。
找到一个SAS考题(可能是220的180题),与pad和infile有关:(原题见:http://jpsmonline.umd.edu/SASOnlineTutor/sot12/en/60476/m19/m19_33.htm )

Which raw data file requires the PAD option in the INFILE statement in order to correctly
read the data using either column input or formatted input?

112233.jpg

答案是 A,只有它数据不齐。




您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 12:04