楼主: liudeng2005
2921 2

问高手,关于input ,output [推广有奖]

  • 0关注
  • 2粉丝

已卖:2份资源

副教授

34%

还不是VIP/贵宾

-

威望
0
论坛币
1362 个
通用积分
6.2842
学术水平
32 点
热心指数
61 点
信用等级
35 点
经验
24271 点
帖子
1120
精华
0
在线时间
514 小时
注册时间
2009-7-12
最后登录
2017-4-1

楼主
liudeng2005 发表于 2009-7-25 22:02:30 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
在一个infile 的data步里,出现一些if语句,并且有多个地方有input,但整个步骤中没有output语句,这个时候什么时候才是写一条记录进去呢?
或者帮忙解释一下下面这个program是怎么执行的.谢谢!

data sasuser.billing1 (drop=type);   
infile jan98dat;   
retain ID Name;  
input Type $1. @;   
if type='P' then input @3 id $4. @8 name $15.;  
if type='C';   
input @3 Date mmddyy8. @12 Amount comma6.;
  format date mmddyy8. amount dollar7.2;
run;
proc print data=sasuser.billing1;
run;

jan98dat的前5条记录是
Raw Data File Jan98dat
1---+----10---+----20--
P 1095 SMITH, HOWARD
C 01-08-98 $45.0
C 01-17-98 $37.5
P 1096 BARCLAY, NICK
C 01-09-98 $156.5  

  这个程序实际运行的结果是
obs      id        name                     date               amount
1        1096   smith,howard      01/09/98           $45.00
2        1096   smith,howard      01/17/98          $37.50
剩下的记录和这个差不多。  我的疑问是,为什么不是第一个input的时候就output了。这个output的机制到底是怎么样的? 请高手赐教,谢谢!
另外就是最后出现的if type='C'; 语句是怎么执行的?如果是否是什么情况。
二维码

扫码加我 拉你入群

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

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

关键词:output outpu Input put Out 高手 output Input

回帖推荐

zhenghangbin 发表于2楼  查看完整内容

首先这个raw data文件是hierarchical file,也就是说type为P的记录是head record,后面的每一个type为C的记录属于对应的上面的type为P的记录。 因为你不自己输入output的话data语句是执行一次output一次的,所以不是第一个input的时候就output了。 if type='C';这个语句表面接下来的语句只有在该语句为真的情况下才执行,如果是否的话后面的就不读取date和amount这两个变量的数值了。

本帖被以下文库推荐

沙发
zhenghangbin 发表于 2009-7-26 00:48:35
首先这个raw data文件是hierarchical file,也就是说type为P的记录是head record,后面的每一个type为C的记录属于对应的上面的type为P的记录。

因为你不自己输入output的话data语句是执行一次output一次的,所以不是第一个input的时候就output了。

if type='C';这个语句表面接下来的语句只有在该语句为真的情况下才执行,如果是否的话后面的就不读取date和amount这两个变量的数值了。
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

藤椅
liudeng2005 发表于 2009-7-26 09:20:09
谢谢你的解释。
我用sas的online doc,查了一下data step,发现这2行。
subsetting IF statement stops the current iteration when a condition is false, does not write the current observation to the data set, and returns control to the top of the DATA step.

IF-THEN/ELSE statement stops the current iteration when a condition is true, writes the current observation to the data set, and returns control to the top of the DATA step.

发现还是不对劲,这样的话第一个关于type的if,应该在值等于p的时候就跳到top ot the data step了,这是咋回事呢?

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

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