SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1053|回复: 9
打印 上一主题 下一主题

do to

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-1-28 08:13:32 | 只看该作者

do to

[u:3arq3qdc][color=#000000:3arq3qdc][b:3arq3qdc]如果想对datalines卡的数据作分类汇总(相同的数据作一个计数汇总),用do  to 实现怎么实现?[/b:3arq3qdc][/color:3arq3qdc][/u:3arq3qdc]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-1-29 15:49:07 | 只看该作者

To hopewell

劳烦hopewell帮助解答,我知道您一定会的。谢谢。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-1-29 16:11:59 | 只看该作者

Re: do to

do to是什么?是do loop吗?
不太明白分类汇总跟do loop有什么关系,方便的话举个例子.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2010-1-29 22:59:41 | 只看该作者

Re: do to

比如:
<!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D --> 一组数据var:1 2 2 3 4 4 3 57 5 8 9很多数据,统计var中,1的个数 2 的个数……该用什么方法解决呢?谢谢hopewell.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2010-1-29 23:47:13 | 只看该作者

Re: do to

[code:yag7gay5]data a;
        input var @@;
datalines;
1 2 2 3 4 4 3 57 5 8 9
;

proc sql;
   create table b as
      select var,n(var) as n
           from a
           group by var;
quit;[/code:yag7gay5]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2010-1-30 08:26:12 | 只看该作者

Re: do to

谢谢hopewell.分类汇总的功能完全实现了。
可能我举的例子对我自己的实际问题不是太合适,我再举一个例子,再麻烦hopewell帮忙解答。
有一系列数据var:
1 23 1 5 6 8 9 10 4 5 8 9 2 5 1 4 6 37 8 6 9 2  1 7 6 3 6 8 6 9 7 85 6 3  2 1;
这系列数据,i从1到20的(do i=1 to 20 by 1),条件为0&lt;var&lt;i的各个范围的概率。
最的一输出的结果是:
i  gailv
1  ...(意思是:var在(0,1)这个范围的概率)
2  ...
………
20  gailv
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2010-1-30 11:03:55 | 只看该作者

Re: do to

[code:10gk7m54]data a;
        input var @@;
datalines;
1 23 1 5 6 8 9 10 4 5 8 9 2 5 1 4 6 37 8 6 9 2 1 7 6 3 6 8 6 9 7 85 6 3 2 1
;

proc sql;
        create table b as
                select mod(monotonic()-1,20)+1 as i,
                                sum(ifn(0&lt;var&lt;=calculated i,1,0))/count(var) as gailv
                        from a
                        group by i;
quit;[/code:10gk7m54]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2010-1-30 20:17:37 | 只看该作者

Re: do to

叩谢hopewell,先研究这段程序,都没有用过这种用法。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2010-1-30 20:22:46 | 只看该作者

Re: do to

请问是在9.2编写的吗?我的是8.1,ifn函数提示出错。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2010-1-30 21:28:42 | 只看该作者

Re: do to

不确定8下能不能用,也不确定是不是你要的,试试吧
[code:222ts6nm]data a;
        input var @@;
        i=mod(_n_-1,20)+1;
        if 0&lt;var&lt;=i then condition=1;
        else condition=0;
datalines;
1 23 1 5 6 8 9 10 4 5 8 9 2 5 1 4 6 37 8 6 9 2 1 7 6 3 6 8 6 9 7 85 6 3 2 1
;

proc sql;
        create table b as
                select i,sum(condition)/count(var) as gailv
                        from a
                        group by i;
quit;[/code:222ts6nm]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-6 09:48 , Processed in 0.174538 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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