SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

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

新手问个问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2011-3-30 09:20:11 | 只看该作者

新手问个问题

A中的数据:
name    sex      age

wang        m        20
qian         m        19
li              f          25
sun          m        40
wu           m        55

B中的数据:
pcd      mcd

p1        m12
p2        m15
p3        m45
p5        m2

用下面的代码执行之后
[code:3qbjgj5h]
data C;
     set A;
     do i = 1 to cnt by 1;
          set B point = i nobs =cnt;
     end;
run;
[/code:3qbjgj5h]

C:
name    sex      age   pcd      mcd

wang     m        20     p5        m2
qian      m        19     p5        m2
li          f          25     p5        m2
sun       m        40     p5        m2
wu        m        55     p5        m2

为什么只把B中的最后一行观测加到C中了
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2011-3-30 10:03:22 | 只看该作者

Re: 新手问个问题

加一个output语句
[code:38hps1e4]
data C;
     set A;
     do i = 1 to cnt by 1;
          set B point = i nobs =cnt;
          output;
end;
run;

[/code:38hps1e4]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2011-3-30 10:27:02 | 只看该作者

Re: 新手问个问题

谢谢,但为什么不加output就只把最后一行观测添加进去了呢?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2011-3-30 20:38:01 | 只看该作者

Re: 新手问个问题

原因是:
当使用point=时,数据是被一种叫做随机取用的方法(random access)来处理的,而在此时数据之中并不蕴含休止符,比如说,end of file,因此,我们必须清晰地表述何时输出(output)何时停止(stop)。我个人的经验是,1.使用point=选项时,程序的环境和语法应该很清晰。如果复杂地套用,有可能会得到你所预想不到的结果。2. 被random accessed 的数据应该较小(比如尽量减少不必要的变量) 3. 这种方法是比较高效的(我不知道为什么)
京剧
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-11 09:20 , Processed in 0.068643 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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