楼主: beijingdizheng
2522 3

[问答] 哪位大侠可以好好帮我讲讲sas infile @和@@的区别 越清楚越好 [推广有奖]

  • 8关注
  • 8粉丝

已卖:472份资源

硕士生

78%

还不是VIP/贵宾

-

威望
0
论坛币
4443 个
通用积分
4.0200
学术水平
27 点
热心指数
25 点
信用等级
17 点
经验
4577 点
帖子
101
精华
0
在线时间
240 小时
注册时间
2012-10-9
最后登录
2022-6-21

楼主
beijingdizheng 发表于 2013-8-12 15:39:48 |AI写论文
2论坛币
哪位大侠可以好好帮我讲讲sas infile @和@@的区别 越清楚越好

最佳答案

ihust 查看完整内容

@@是一行读取多个观测,@是多行读取一个观测
关键词:infile file NFI

沙发
ihust 发表于 2013-8-12 15:39:49
@@是一行读取多个观测,@是多行读取一个观测

藤椅
wwhwh111 发表于 2013-8-12 15:52:19
悬赏不多哦

板凳
beijingdizheng 发表于 2013-8-12 17:37:18
这个说的很清楚:
一个数据步可以包括多个INPUT语句。在数据步执行过程中,一般的,在INPUT语句执行前,会默认从外部数据源读取一个观测记录(一般为一行或多行)到输入缓冲器中,然后按照INPUT设定的格式读入相关变量到PDV中。当程序有多个INPUT语句时,每一个INPUT语句都会在执行前读入一个观测记录到输入缓冲器。因此若前一个input语句执行完毕之后,若该行的数据没有使用完,遇到下一个INPUT语句时也会放弃之前没有用完的数据。若需要保留前一个INPUT语句使用过的数据行供以后的input语句使用,只需在前一个INPUT语句最后加入跟踪符合@,表示该行没有用完的数据暂时保存在输入缓冲器中以备下一个最近的INPUT语句使用。9   data abc;60   put _all_;6162   infile cards;6364   input x @;65   put _all_;6667   input y;put _all_;686970   input z @@;71   put _all_;7273   cards;x=. y=. z=. _ERROR_=0 _N_=1x=1 y=. z=. _ERROR_=0 _N_=1x=1 y=2 z=. _ERROR_=0 _N_=1x=1 y=2 z=7 _ERROR_=0 _N_=1x=. y=. z=. _ERROR_=0 _N_=2x=8 y=. z=. _ERROR_=0 _N_=2x=8 y=9 z=. _ERROR_=0 _N_=2x=8 y=9 z=13 _ERROR_=0 _N_=2x=. y=. z=. _ERROR_=0 _N_=3x=14 y=. z=. _ERROR_=0 _N_=3x=14 y=15 z=. _ERROR_=0 _N_=3NOTE: LOST CARD.RULE:      ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+--77         ;x=14 y=15 z=. _ERROR_=1 _N_=3NOTE: 数据集 WORK.ABC 有 2 个观测和 3 个变量。NOTE: “DATA 语句”所用时间(总处理时间):      实际时间          0.01 秒      CPU 时间          0.01 秒77   ;78   run;在数据步执行的每次循环开始时,程序会将输入缓冲器中的信息删除,在程序执行过程中遇到INPUT语句时,就从源数据文件中读入一个新的观测记录(一般是一行或多行)到输入缓冲器。如果源数据文件中一个数据行有多个观测记录,每次循环也只能读取第一个。若要在程序运行的下一个循环中继续读取之前没有读完的数据行,只需在INPUT语句最后加入两个跟踪符号@@,表示该行没有用完的数据保存在输入缓冲器中以备下一个程序循环继续使用。
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
reachael + 1 + 1 + 1 精彩帖子
Imasasor + 60 + 60 + 3 补偿

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

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-21 08:45