楼主: liangxuebing
5193 2

如何SAS检索最大值之前的最小值,并且找到相应的日期? [推广有奖]

  • 0关注
  • 2粉丝

已卖:39份资源

讲师

33%

还不是VIP/贵宾

-

威望
0
论坛币
605 个
通用积分
7.6600
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
489 点
帖子
206
精华
0
在线时间
454 小时
注册时间
2010-11-23
最后登录
2023-4-25

楼主
liangxuebing 发表于 2014-3-30 14:55:09 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
具体如下:
DATASET 可以简化如下,ID startmonth price
1        198011    12
1        198012    13
1        198101    20
1        198102    25
1        198103    10
2        201101    20
2        201102    30
2        201103    5
2        201104    8
如何通过SAS操作,找到ID为1的相应的price的最大值25,然后找到在最大值这一天(198102),之前某一天的最小价格(10),再对最大值和最小值作差,得到新的列x ?
二维码

扫码加我 拉你入群

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

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

关键词:最大值 最小值 dataset Price DataS 最大值 如何

沙发
liangxuebing 发表于 2014-3-30 19:06:30
搞了两天,我自己解决了,和大家分享一下。先升序排,找到最大值,然后和原表合并,再对原表的价格求降序,然后得带最小值,然后把两个日期作差,区正值。就OK了~

藤椅
bobguy 发表于 2014-3-30 23:18:58
liangxuebing 发表于 2014-3-30 19:06
搞了两天,我自己解决了,和大家分享一下。先升序排,找到最大值,然后和原表合并,再对原表的价格求降序, ...
The same logic can be built into a data step. See below.

DATA tmp;
input ID startmonth price;
cards;
1        198011    12
1        198012    13
1        198101    20
1        198102    25
1        198103    10
2        201101    20
2        201102    30
2        201103    5
2        201104    8
;

/**assume data is sorted**/
data tmp2;
do i=1 by -1 until(last.id);
  set tmp;
  by id ;
  if first.id then max=.;
  if price>=max then max=price;
end;

do i=1 by -1 until(max=price);
  set tmp;
  by id ;
  if first.id then min=1e308;
  if price<=min then min=price;

end;

do i=1 by -1 until(last.id);
  set tmp;
  by id ;
  diff=max-min;
  output;
end;
drop i;
run;

proc print;run;

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 16:58