标题: 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;