全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4340 1
2016-03-20
2.Given the following raw data records in TEXTFILE.TXT:
—-|—-10—|—-20—|—-30
John,FEB,13,25,14,27,Final
John,MAR,26,17,29,11,23,Current
Tina,FEB,15,18,12,13,Final
Tina,MAR,29,14,19,27,20,Current
The following output is desired:
Obs  Name  Month  Status    Week1   Week2   Week3   Week4   Week5
1   John   FEB   Final       $13     $25     $14     $27       .
2   John   MAR   Current     $26     $17     $29     $11     $23
3   Tina   FEB   Final       $15     $18     $12     $13       .
4   Tina   MAR   Current     $29     $14     $19     $27     $20
Which SAS program correctly produces the desired output?

看了crackman的70题详解,仍然不是很清楚,以下是原文的解释”A.
data WORK.NUMBERS;
   length Name $ 4 Month $ 3 Status $ 7;
   infile ‘TEXTFILE.TXT’ dsd;
   input Name $ Month $;
   if Month=’FEB’ then input Week1 Week2 Week3 Week4 Status $;
   else if Month=’MAR’ then input Week1 Week2 Week3 Week4 Week5 Status$;
   format Week1-Week5 dollar6.;
run;
proc print data=WORK.NUMBERS;
run;
A.DSD
定若一个数据是由引号,那么SAS认为引号内的逗号也是属于字符数据;定默分隔符逗号;连续两个分隔符之的数据位缺失入数据去掉引号。
input
句在观测时,先从第一行“John,FEB,13,25,14,27,Final”取数据“John,FEB”入到了第二行“John,MAR,26,17,29,11,23,Current”,那么因month=”FEB”true
所以接着在第二行“John,MAR,26,17,29,11,23,Current”week1week2,但是john mar都是字符型,而week1 week2认为型,所以就是缺失继续读week3 week4也就是26 17
接着就是status 29完之后回到infile,回到input,从第三行开始”Tina,FEB,15,18,12,13,Final”,name month之后,达到第四行“Tina,MAR,29,14,19,27,20,Current”。”


[size=14.6667px]有点看不懂这个读取的顺序,为什么INPUT在读取了“john,FEB"后就直接转到了第二行?
[size=14.6667px]在[size=14.6667px]if Month=’FEB’ then [size=14.6667px]input[size=14.6667px] Week1 Week2 Week3 Week4 Status $; 这句中,不是说如果month ="FEB"就直接输入Week1,Week2,...Week4了吗。
[size=14.6667px]求大神解释一下!!!
二维码

扫码加我 拉你入群

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

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

全部回复
2016-3-20 03:02:45
自己先顶!!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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