SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1653|回复: 3
打印 上一主题 下一主题

认证28中的一个问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2006-4-26 11:26:33 | 只看该作者

认证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吗?

谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2006-4-26 22:28:14 | 只看该作者

replay

建议看看online SAS tutorial中读长度变化的变量。

reclen-8就是因为因为ID和OFFICE的长度和为8,reclen是读出的是每条观测的长度。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2006-4-27 09:14:08 | 只看该作者

回复

感觉应该是12不是10,varying后的数字表示name中观测值最长的长度
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2006-5-12 17:36:22 | 只看该作者

自己上机试了一下。

拷贝了你的数据文本,发现前四行除了数据外都有一个空格,而最后以行数据没有,这样在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!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-10 02:10 , Processed in 0.077862 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表