SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

楼主: shiyiming
打印 上一主题 下一主题

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

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

回复lightening[code:8848uof3]proc sql noprint outobs=5;
     create table temp as
         select *
         from class;
quit;
[/code:8848uof3]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

Thanks again, urchin,
Your link opens another window for me to learn SAS.

It works after I reviewed horse1's entry. I tried on a big dataset.
Thanks a lot, all of you.

[color=#4000FF:1xy0jay6]proc sql  outobs=10;       /* 如果要选 第 200 至 299 的记录呢?*/
   Create table work.temp as
select *
from sashelp.class
order by height desc;
quit; [/color:1xy0jay6]

只是感到奇怪,有些很简单的东西,SAS 处理起来变得复杂了。
.Net 好像可以  Select top 10 .... from table_Name;

FoxPro 可以 Select * from yourtable where  recno()<=10;

Select yourtable
Go Bottom
? recno()     * 显示所有记录, (包括已删除的);

或:
Select * from yourtable
? _tally
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
13#
 楼主| 发表于 2008-10-17 13:19:48 | 只看该作者

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

那你可以在用SQL读入数据前做个flag, 然后在sql中用where语句
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

干吗放着强大的DATA STEP不用,老想着用SQL啊?在SAS里能不用SQL就不要用,执行效率巨低下!
[code:2kr92e4n]data class;
set sashelp.class(firstobs=2 obs=10);
run;[/code:2kr92e4n]
[code:2kr92e4n]proc sort data=sashelp.class(firstobs=2 obs=10) out=class;
by height descending;
run;[/code:2kr92e4n]
[code:2kr92e4n]proc sort data=sashelp.class out=class;
by height descending;
run;
data class;
set class(firstobs=2 obs=10);
run;[/code:2kr92e4n]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
15#
 楼主| 发表于 2008-10-17 20:33:12 | 只看该作者

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

十分感谢。一些模糊概念变得清晰起来。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
16#
 楼主| 发表于 2008-10-21 12:58:00 | 只看该作者

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

用select直接生成红变量就OK了
proc sql;
     create table temp as
    select count(*) into :totnum
    from sashelp.class;
quit;
put &totnum;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
17#
 楼主| 发表于 2008-10-24 05:09:15 | 只看该作者

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

那个 Put 不好使呀。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
18#
 楼主| 发表于 2008-10-24 07:40:43 | 只看该作者

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

%put &totnum;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
19#
 楼主| 发表于 2008-10-24 10:14:29 | 只看该作者

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

是这样吗?
proc sql;
create table temp as
select count(*) into :totnum
from sashelp.class;
quit;

Data _null_;
%put &totnum=;
run;

Log screen 显示

WARNING: Apparent symbolic reference TOTNUM not resolved.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
20#
 楼主| 发表于 2008-10-24 10:27:09 | 只看该作者

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

晕,还要手把手写的这么详细才行啊。你需要恶补SAS Programming I和II,还有SAS Macro这些教材啊。
不过前面不是特意写了,proc sql的效率暴差。如果原始数据集很大,这个过程将会是若干小时。用我之前写的方法,无论原始数据集多大,运行时间始终不超过5秒。
<!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: --> [code:1zggklsw]proc sql;
create table temp as
select count(*) into &#58;totnum
from sashelp&#46;class;
quit;
%put &amp;totnum; [/code:1zggklsw]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-5 03:28 , Processed in 0.073526 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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