SAS中文论坛

标题: SAS基础问题求教 [打印本页]

作者: shiyiming    时间: 2007-6-7 11:35
标题: SAS基础问题求教
如何累加行数
比如我有很多行 其中有几行是满足要求的 如何计算出这几行的总数啊
作者: shiyiming    时间: 2007-6-7 13:13
标题: Re: SAS基础问题求教
怎么没人理我啊 我在说的详细些
比如:
028信息集
name  age    sex
zhang   34     na
lisan     20     nv
lishi      19     nv
zhangd  28     na
如何统计年龄大于25的人数 并生成新的结果集
格式如下
class         num
028            2
作者: shiyiming    时间: 2007-6-7 14:28
标题: 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的形式
作者: shiyiming    时间: 2007-6-7 16:35
标题: Re: SAS基础问题求教
不用SQL怎么写啊
还有如果 我想让下面一行的某个值减去上面一行的同列某个值怎么做啊
作者: shiyiming    时间: 2007-6-8 11:49
标题: to 心动音符
可以用remain语句。
或者用diff , lag等函数
作者: shiyiming    时间: 2007-7-9 16:06
标题: 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;
作者: shiyiming    时间: 2007-7-11 10:53
标题: 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.




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2