SAS中文论坛

标题: 吐血请教:同一变量前后比较的问题 [打印本页]

作者: shiyiming    时间: 2005-12-6 15:55
标题: 吐血请教:同一变量前后比较的问题
<!-- s:roll: --><img src="{SMILIES_PATH}/icon_rolleyes.gif" alt=":roll:" title="Rolling Eyes" /><!-- s:roll: -->
数据如下
pano  n  m
002      1     12
002      2     23
002      5     18
004      1     15
004      2     26
004      5     28
....................

我想比较是否随着n的增大m的值也随着增大,如果不是输出!
请问这个问题如何解决?
因为我的数据量比较大,所以不能将m分解为多个变量,困扰很久了!
期盼高人指点!非常感谢!
作者: shiyiming    时间: 2005-12-6 23:10
标题: @
是否随着n的增大m的值也随着增大?

考虑spearman秩相关。

[code:569d8]proc corr spearman;
var m n ;
run;[/code:569d8]
作者: shiyiming    时间: 2005-12-7 09:36
标题: 对不起!我没有说清楚!
<!-- s:P --><img src="{SMILIES_PATH}/icon_razz.gif" alt=":P" title="Razz" /><!-- s:P -->  非常感谢collen的帮助!对不起!这里我没有说清楚!
我想要作的就是比较大小然后输出不符合要求的数据,比如说
pano   n   time
002     1   10:08
002     4   11:07
002     8   11:00
.......................
002   100  23:00
003      1   9:00
003      2   9:25
......................
我要求的是比较随着n的增大时间是否是越来越晚,第三行时间比第二行要早,这样第三行的数据就要求被输出,我这里的数据量很大所以我不能把所有的time值再分解为多个变量!很郁闷呀!请多多指教!万分感谢!
作者: shiyiming    时间: 2005-12-7 11:13
标题: Question
是按照pana进行分类统计吗?
作者: shiyiming    时间: 2005-12-7 15:42
标题: 可以试试用LAG函数
data temp;
input pano $3. n m;
cards;
002 1 12
002 2 23
002 5 18
004 1 15
004 2 26
004 5 28
;
run;
proc sort data=temp;by pano n;

data temp1;set temp;by pano n;
if (lag(pano)=pano and n&gt;lag(n)) and m&lt;=lag(m) then output;
run;
作者: shiyiming    时间: 2005-12-7 16:10
标题: 非常感谢大家的帮忙!
moonlight 谢谢!
我按照你的办法做了可以的非常感谢! <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
我还想就是把当前的有问题的数据和前一个同它相比较的数据同时输出来这样看着结果比较明了!怎么办?希望能够给予帮助!谢谢!
作者: shiyiming    时间: 2005-12-8 09:52
标题: 将两个数据集串联
将n变量descending sort,仍然使用LAG函数挑出你想要的数据(即,M&gt;LAG(M))生成新数据集,将两个数据集串联九可啊
作者: shiyiming    时间: 2005-12-8 12:13
标题: 谢谢!
因为我的数据量比较大,很多的情况都是这样的,如果再这样就会增加太多数据集,我想最好可以在一个数据集里面搞定,能够用某一函数控制在数据部中输出的变量!这样比较方便吧呵呵!辛苦了! <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) --> 谢谢!
作者: shiyiming    时间: 2005-12-8 13:03
标题: 你还真是懒啊!!!
借用上面的数据集(temp,排序后的)

data temp2;
set temp(rename=(pano=pano1 n=n1 m=m1));by pano1 n1;
pano=lag(pano1);n=lag(n1);m=lag(m1);
if (lag(pano1)=pano1 and n1&gt;lag(n1)) and m1&lt;=lag(m1) then id=1;
if id=1 or lag(id)=1 then output;
drop pano1 n1 m1 id;
run;
作者: shiyiming    时间: 2005-12-8 15:29
标题: 谢谢!
谢谢




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