全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2639 6
2011-11-18
一个sas数据集如下:
a  b
1  2
0  6
0  6
1  5  
0  1
1  6
...

该数据集是某软件导出的多个研究的sas数据集(现无法将多个研究分开导出)。其中a变量的观测作为一种标识,每当A=1,一直到出现在下一个1上面那行的0为止,这若干行就是一个独立的研究数据集,0出现的次数不定,可能只有1行,也可能有二十多行。目的很简单,用retain和max语句求这独立的研究中(从A=1那行开始到下一次A=1出现的上一行)b变量的最大值。

关键在于这个汇集多个研究的数据集不能sort不能by,否则数据全乱了。这样我就无法用if first之类的语句,除此之外在下实在想不出有什么办法来达到求每个研究最大值的效果。或者拆分表格?或直接在原表上进行操作?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2011-11-18 21:20:04
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-11-18 21:48:23
多谢楼上的网友, 通过新建一个变量来达成分类的效果!!对于初学者的我来说,这个思路一定对很多以后遇到的问题有很大的启发。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-11-19 04:02:02
学习了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-11-21 22:18:36
对的,通过一个新的变量可以很方便的处理很多事情,尤其是在做report的过程中经常会用到数据集的合并,排序等问题。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-11-22 01:54:19
楼主,你这个问题是可以用set by的。

data c;
input a  b;
cards;
1  2
0  10
0  6
1  5
0  1
1  6
0  4
0  2
0  6
0  77
0  5
;
data d;
set c;
by a notsorted;
retain c 0;
if a=1 and first.a=1 then c=b;
c=max(c,b);
if a=0 and last.a=1;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群