SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 6541|回复: 20
打印 上一主题 下一主题

怎样计算sas数据集的行数?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2008-10-15 10:57:50 | 只看该作者

怎样计算sas数据集的行数?

怎样对变化的sas数据集计算它的行数?使用循环语句么,请大侠帮忙!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2008-10-15 11:02:11 | 只看该作者

Re: 怎样计算sas数据集的行数?

也有类似问题,

Create Table new as
Select  count(product) as cnt from myTable
            group by product
               Order by cnt desc;

如果希望选出前 5 条记录,应该怎么写
   
     where ......  <=5 ;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2008-10-15 11:20:49 | 只看该作者

Re: 怎样计算sas数据集的行数?

取前五条记录 where _n_<=5;
计算行数用:[code:367hckdh]proc sql;
     create table temp as
         select count(*) as totnum
         from sashelp.class;
quit;


data temp;
     set sashelp.class end=eof;
         num+1;
         if eof then output;
         keep num;
run;
[/code:367hckdh]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2008-10-15 11:22:23 | 只看该作者

Re: 怎样计算sas数据集的行数?

应该用 if _n_<=5;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2008-10-16 06:30:33 | 只看该作者

Re: 怎样计算sas数据集的行数?

horse1,

能够举个例子吗?比如怎么用  SQL 选出前 5 个同学的记录。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2008-10-16 16:38:49 | 只看该作者

Re: 怎样计算sas数据集的行数?

试一下这个(生成一个宏变量):
[color=#FF0000:1dn2ihga]data a;
  set a end=final;
    if _n_ then
                do;
                  i+1;
                  output;
                end;
          
        if final then  call symput("numbe",i);
run;[/color:1dn2ihga]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2008-10-16 17:06:17 | 只看该作者

Re: 怎样计算sas数据集的行数?

请问需要的是这个吗?
data _null_;
    set table1 nobs=mm;
    call symput('count',mm);
    put count;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2008-10-16 17:55:17 | 只看该作者

Re: 怎样计算sas数据集的行数?

楼上几位完全都没有考虑到执行效率,呵呵呵,如果数据集很大,你们这么做法实在不敢恭维。不相信可以挑个大数据集试试看,需要花多久。
不过还是很感谢积极参与!来,我来演示两招效率高的做法。
[code:25vy3x72]
/*方法一:MACRO实现*/
%let dsid=%sysfunc(open(sashelp.class,i));
%let count=%sysfunc(attrn(&dsid,nlobs));
%let rc=%sysfunc(close(&dsid));
%put COUNT: &count;
[/code:25vy3x72]
[code:25vy3x72]
/*方法二:DATA STEP实现*/
data _null_;
if 0 then set sashelp.class nobs=nobs;
call symput('count',nobs);
run;
%put COUNT: &count;
[/code:25vy3x72]
想要提高执行效率,请参考宝典:SAS Programming III这本书。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2008-10-16 23:02:58 | 只看该作者

Re: 怎样计算sas数据集的行数?

这样在  log 窗口里是可以看到了,但如何选出前 5 条记录呢?
再次谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2008-10-16 23:17:30 | 只看该作者

Re: 怎样计算sas数据集的行数?

<!-- m --><a class="postlink" href="http://sasor.feoh.net/viewtopic.php?f=1&amp;t=3977">http://sasor.feoh.net/viewtopic.php?f=1&amp;t=3977</a><!-- m -->
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-5 03:24 , Processed in 0.068283 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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