SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1757|回复: 6
打印 上一主题 下一主题

SAS基础问题求教

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2007-6-7 11:35:52 | 只看该作者

SAS基础问题求教

如何累加行数
比如我有很多行 其中有几行是满足要求的 如何计算出这几行的总数啊
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2007-6-7 13:13:39 | 只看该作者

Re: SAS基础问题求教

怎么没人理我啊 我在说的详细些
比如:
028信息集
name  age    sex
zhang   34     na
lisan     20     nv
lishi      19     nv
zhangd  28     na
如何统计年龄大于25的人数 并生成新的结果集
格式如下
class         num
028            2
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2007-6-7 14:28:42 | 只看该作者

Re: SAS基础问题求教

简单点就用proc sql
[code:1f5b4]proc sql noprint;
create table freq as
select '028' as class, count(*) as num
from data028
where age>25;
quit;[/code:1f5b4]
想写的灵活点,用proc freq + format + macro的形式
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2007-6-7 16:35:45 | 只看该作者

Re: SAS基础问题求教

不用SQL怎么写啊
还有如果 我想让下面一行的某个值减去上面一行的同列某个值怎么做啊
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2007-6-8 11:49:59 | 只看该作者

to 心动音符

可以用remain语句。
或者用diff , lag等函数
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

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

Re: SAS基础问题求教

data a;
input name $ age sex $@@;
cards;
zhang 34 na
lisan 20 nv
lishi 19 nv
zhangd 28 na
;
run;
data b;
set a;
if age>25 then output b;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2007-7-11 10:53:54 | 只看该作者

Re: SAS基础问题求教

To 心动音符 :

I will type my reply in English. Sorry, my Chinese input skill is too bad.

For your conditional sum problem ( I assume you know how to parse acsii file into SAS dataset)
===========
name age sex
zhang 34 na
lisan 20 nv
lishi 19 nv
zhangd 28 na
===========

If use pure BASE datastep code:

data largerthan25;
(readin your data here);
class='028';
run;

data test;
set test end=eof;
retain numbercount;
if age>25 then numbercount+1;
if eof the then output largerthan25;
run;

If use SAS procedure:
proc means data=test(where=(age>25)) noprint;
var class;
output out=largerthan25 n=numbercount;
run;
proc print data=largerthan25;
run;

Give a try.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-4 07:07 , Processed in 0.066869 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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