全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3462 4
2016-07-28
大神们求解答!刚开始看little sas。看到读取数据部分有一个“多个观测在同一行时,INPUT该怎么写”的问题。原始文件如下
文件名:temperature.txt
文件内容:(城市名 州名 日最高温 日最低温)
Nome AK
55 44
Miami FL
90 75
Raleigh NC
88 68


程序如下:
DATA HIGHLOW ;
INFILE '...............' ;
INPUT City $ State $ High Low ;
PROC PRINT DATA=HIGHLOW ;
RUN ;


输出3个观测4个变量如下
Obs      City       State     High     Low
1         Nome      AK        55        44
2         Miami      FL         90        75
3         Raleigh    NC        88        68


但是如果我把原文件改成
Nome AK
55 44 Miami FL 90 75 Raleigh NC
88 68



用同样的程序去读输出结果只有一个观测如下
Obs      City       State     High     Low
1         Nome      AK        55        44


两个问题:未修改时,INPUT读文件是一行一行读。为啥同一行有多个观测的时候不能继续顺序读下去?而且为什么它没有读完第二行继续读第三行?

二维码

扫码加我 拉你入群

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

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

全部回复
2016-7-28 22:27:23
第一次data loop,input语句读到第二行的44, 此时第一次data loop结束,回到data highlow开始第二次data loop,此时input会自动跳到下一行,就是你修改的文件的第三行,读完86,66之后,没有数据可读,出现lost card情况,所以只会出现一行,楼主可以看一下put到log里面的信息:

DATA HIGHLOW ;
INFILE '------' ;
put "Before input statment execute: "  _all_;
INPUT City $ State $ High Low;
put "After input statement execute: "  _all_;
run;

如果要读取成功,可以用@@, @@符号可以阻止input的时候自动跳到下一行,并且一直读完一行的所有数据:

DATA HIGHLOW ;
INFILE '------' ;
put "Before input statment execute: "  _all_;
INPUT City $ State $ High Low @@;
put "After input statement execute: "  _all_;
run;
二维码

扫码加我 拉你入群

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

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

2016-7-28 22:39:05
因为你的INPUT有4个输入变量,所以在compile阶段会生成一个能接收4个变量的data vector。然后在一个循环里会直接读两行数据(因为你第一行只有两个字段,就接着去第二行读前两个),当读满一个data vector,把data vector里的数据写到data set里,就表示这一个循环结束。接着开始第二个循环,但开始第二个循环要从下一行开始,不会管当前这一行后面还有没有数据。
二维码

扫码加我 拉你入群

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

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

2016-7-29 11:09:33
wwang111 发表于 2016-7-28 22:27
第一次data loop,input语句读到第二行的44, 此时第一次data loop结束,回到data highlow开始第二次data l ...
非常感谢~~回答非常清楚~~不知道为啥我的log里面除了程序描述没有其他说明
二维码

扫码加我 拉你入群

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

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

2016-7-29 11:10:27
franky_sas 发表于 2016-7-28 22:39
因为你的INPUT有4个输入变量,所以在compile阶段会生成一个能接收4个变量的data vector。然后在一个循环里会 ...
非常感谢~~解答非常清楚~~
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群