楼主: zoumingwang2004
9655 1

[原创博文] 求助Infile读入语句中的选项意思 [推广有奖]

  • 1关注
  • 0粉丝

爱股票

已卖:890份资源

副教授

29%

还不是VIP/贵宾

-

威望
0
论坛币
19 个
通用积分
37.0417
学术水平
3 点
热心指数
0 点
信用等级
0 点
经验
1589 点
帖子
411
精华
0
在线时间
727 小时
注册时间
2006-4-3
最后登录
2024-11-14

楼主
zoumingwang2004 发表于 2010-3-18 21:18:48 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

FLOWOVER/ MISSOVER/ TRUNCOVER/ SCANOVER/ STOPOVER 这5个含有over的选项之所以放在一起,是因为它们都用于读取记录末尾不完整的数据。
FLOWOVER是input默认的读取方式,缺省即是FLOWOVER,当前数据行所含数据个数相比变量个数不够时,SAS会从下一条记录继续读取。很多情况下,原始数据是按照行排好的,不够长度一般代表有部分数据缺失,这时自然不希望继续往下面读下一个数据行,所以就需要后面的这些选项进行处理。
MISSOVER 如果记录行末尾没有足够的数据对应变量或者有不够列宽的数据对应变量,那从当前变量起,到变量列表中最后一个变量都置为缺失值;
TRUNCOVER 跟MISSOVER不同的是如果末端的数据不够列宽则从这里截断,读取的部分数据被保留下来,当前变量之后的变量就会置为缺失值;
SCANOVER 当前记录行找不到@'character-string'表达式指定的字符串时,继续往下面记录行进行查找,一直到找到为止。默认情况或者只有FLOWOVER选项的情况都是与指定SCANOVER等价的,也就是说SCANOVER与MISSOVER, STOPOVER一起使用才是有意义的。
STOPOVER 当前记录行所含数据不够时,停止执行data步,置自动变量_ERROR_为1,将已经读写在数据集的打印出来。如果要创建的数据集已经存在,则中止创建数据集。
虽然解释完了,我想没有实例就空凭文字解释能把这几个over弄明白似乎有点难,而且这几个选项还特容易混淆。
帮助文件上有个例子很不错,但不一定每个人都会去看。
假设有一个文件'c:\over.txt'数据如下
55555
1
22
333
4444
55555
下面分别用上面这些选项读取这个文件
data test;
    infile 'c:\over.txt' *over;
    input testnum 5.;
run;

OBS

FLOWOVER

MISSOVER

TRUNCOVER

STOPOVER

1
2
3
4
5
6

55555
22
4444
55555
.
55555

55555
.
.
.
4444
55555

55555
1
22
333

55555

FLOWOVER与缺省所有*over选项等价,读取记录行第二行时,该行不够5个列宽,则从下一行开始读取,即22,然后下一行数据33不够5个列宽,于是再读取下一行4444;
MISSOVER 第2-4行记录都不够列宽,因此数据丢失;
TRUNCOVER 第2-4行记录都不够列宽,但是数据被保留下来;
STOPOVER 第二条记录不够列宽,所以被停止执行,而且LOG窗口中输出x=. _ERROR_=1 _N_=1。如果数据集test已经存在,则除了在LOG窗口中输出错误信息外不产生任何动作,如果test不存在,则会创建一个test数据集,但是只有已经读取的第一条记录。
现在还有个问题,如果上面一些选项连用会怎么样?
FLOWOVER与MISSOVER或TRUNCOVER连用时,FLOWOVER被屏蔽,相当于没有FLOWOVER;
SCANOVER与MISSOVER或TRUNCOVER连用时,读取@'character-string'定位的数据以SCANOVER为准,而其他数据则以后者为准;
STOPOVER与其他连用则以STOPOVER

求助部分:(1)上面你的默认读入即FLOWOVER读入是怎样读入的读入后的)OBs代表什么意思?

二维码

扫码加我 拉你入群

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

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

关键词:infile file NFI truncover Character 记录

沙发
juan1102 发表于 2012-4-13 13:46:18
obs表示要读取数据的最后的行坐标,firstobs表示读数据时要读的第一条行坐标,也就是一个文件你不用全部读入,可以读入第firstobs行到obs行的内容。

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

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