SAS中文论坛

标题: 一个小问题 [打印本页]

作者: shiyiming    时间: 2010-5-20 10:47
标题: 一个小问题
有个小问题有些想不明白,请大侠们给点idea。
数据如下:
com x y
1     .   6
1     1  4
1     .   3
1     1   .
1     2   1
1     .   2
2     1   6
2     2   .
2     .   3
2     1   .
2     .   1
2     1   .

上面这样的数据,对应每个com的每个not missing x之间,我需要求y的mean median std min max以及last y,前面几个比较好办,对应每个x可以给个flag然后proc means就可以了。但是最后求last y我有点晕,因为直接用last.flag,可能最后一个y是missing的,那么这时候我要的是最接近的前面的y,这要如何处理?

即结果应如下:
com x lasty
1     1  4
1     1   3
1     2   1
2     1   6
2     2   6
2     1   3
2     1   1

<!-- s:oops: --><img src="{SMILIES_PATH}/icon_redface.gif" alt=":oops:" title="Embarassed" /><!-- s:oops: --> 也不知道我说明白没有,大家给点idea吧。thanks.
作者: shiyiming    时间: 2010-5-20 11:19
标题: Re: 一个小问题
[code:mx45mwiv]data raw;
        input com x y;
datalines;
1 &#46; 6
1 1 4
1 &#46; 3
1 1 &#46;
1 2 1
1 &#46; 2
2 1 6
2 2 &#46;
2 &#46; 3
2 1 &#46;
2 &#46; 1
2 1 &#46;
;

data temp(drop=temp_y);
        retain temp_y;
        set raw;
        by com;
        temp_y=ifn(missing(lag(y)),temp_y,lag(y));
        if not first&#46;com and missing(y) then y=temp_y;
        if x;
run;[/code:mx45mwiv]
作者: shiyiming    时间: 2010-5-20 11:22
标题: Re: 一个小问题
谢谢hope!

temp_y=ifn(lag(y),lag(y),temp_y);这一句是什么意思啊?
作者: shiyiming    时间: 2010-5-20 12:02
标题: Re: 一个小问题
to hopewell
如果y是0, 也不计入之内?
作者: shiyiming    时间: 2010-5-20 12:50
标题: Re: 一个小问题
眼还真尖,让你抓个正着,改过了  <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->
作者: shiyiming    时间: 2010-5-21 10:43
标题: Re: 一个小问题
领教了, <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->




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