楼主: jennysbz
4272 2

SAS如何进行同一列变量内部自己与自己比较 [推广有奖]

  • 0关注
  • 0粉丝

小学生

57%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
53 点
帖子
4
精华
0
在线时间
5 小时
注册时间
2009-9-26
最后登录
2015-3-20

楼主
jennysbz 发表于 2014-12-5 09:05:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有一个表,变量名字有id1,id2, date1, date2, return, 想要对每一行(就是每一个obs)做这么两件事情:第一,根据每一行的date1往前数180天,并count出同样的id1里面有几个unique的date2值,

第二, 根据每一行的date1往前数180天,将同样id1里面所有date2落在这180天区间内的obs选出,选出来之后看id2是不是unique,有duplicate的话就只能keep date2最新的那一个,最后把这些选出来的obs来做 avg(return)

简单地说,上面两步是要创建两个新变量,我 个人感觉用proc sql应该是可以做出来,但是我不知道如何在SAS做这种同一列之间element-wise的comparison~~求各位大牛指教~~~感激不尽~~
二维码

扫码加我 拉你入群

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

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

关键词:Comparison duplicate proc sql Element RETURN SAS 比较 proc sql

沙发
yongyitian 发表于 2014-12-9 09:15:58
  1. /* try this, you may need to modify the code */
  2. /* Question 1 */
  3. proc sql;
  4.    select distinct a.*,
  5.           count(distinct b.date2) as Ndate2
  6.       from test a, test b
  7.       where (a.date1 - 180) < b.date1 <= a.date1
  8.       group by a.id1, a.date1
  9.       order by a.id1, a.date1;
  10. quit;

  11. /* Question 2 */
  12. proc sql;
  13.    select distinct a.*,
  14.           max(b.date2) as Maxdate2 format=yymmdd10.
  15.       from test a, test b
  16.       where (a.date1 - 180) < b.date2 <= a.date1
  17.       group by a.id1, a.date1
  18.       order by a.id1, a.date1;
  19. quit;
复制代码

藤椅
Tigflanker 发表于 2014-12-9 12:46:24
我建议你给出一个简单些的模拟数据集,最好能包括你所说的所有复杂情况,我们好照着做。

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

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