SAS中文论坛
标题:
认证28中的一个问题
[打印本页]
作者:
shiyiming
时间:
2006-4-26 11:26
标题:
认证28中的一个问题
认证28第6题,存在外部文件中的数据如下:
3124Feldman1014
2112Fruchtenicht1015
1018Goodyear1013
2809Hardin1018
3205Matti1016
读入数据的数据步:
DATA offices;
INFILE 'C:\SAS\LX.TXT' LENGTH=RECLEN;
INPUT ID 4. @;
NAMELEN=RECLEN-8;
INPUT NAME $VARYING10.NAMELEN OFFICE;
RUN;
为什么NAMELEN=RECLEN-8中减8,是因为ID和OFFICE的长度和为8吗? 如果还有其他的字符变量长度不定又当如何?
另$VARYING10.NAMELEN 为什么是10, 应该是12吗?
谢谢!
作者:
shiyiming
时间:
2006-4-26 22:28
标题:
replay
建议看看online SAS tutorial中读长度变化的变量。
reclen-8就是因为因为ID和OFFICE的长度和为8,reclen是读出的是每条观测的长度。
作者:
shiyiming
时间:
2006-4-27 09:14
标题:
回复
感觉应该是12不是10,varying后的数字表示name中观测值最长的长度
作者:
shiyiming
时间:
2006-5-12 17:36
标题:
自己上机试了一下。
拷贝了你的数据文本,发现前四行除了数据外都有一个空格,而最后以行数据没有,这样在NAMELEN=RECLEN-8;的时候会出现错误。要么把所有的空格都消除,保留NAMELEN=RECLEN-8; 这样ID长为4,office也为4。
或者,在最后以行数据中价格空格,然后,NAMELEN=RECLEN-9;这时office长为5.
然后INPUT NAME $VARYING10.NAMELEN OFFICE; 应该是12。第二列数据中的英文字母最长为12。
I am a fresh too!
欢迎光临 SAS中文论坛 (http://mysas.net/forum/)
Powered by Discuz! X3.2