楼主: dxystata
1201 3

[问答] 如何把每个个体(id)visit>1的x的最大值取出 [推广有奖]

版主

已卖:302份资源

大师

37%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
183395 个
通用积分
15333.1475
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
298627 点
帖子
5586
精华
1
在线时间
13632 小时
注册时间
2006-6-21
最后登录
2025-12-22

初级学术勋章 初级热心勋章 中级热心勋章 初级信用勋章

楼主
dxystata 发表于 2019-6-24 23:50:18 |AI写论文
40论坛币
  1. data aaa;
  2. input id visit x;
  3. cards;
  4. 1 1 1
  5. 1 2 1
  6. 1 3 3
  7. 1 4 4
  8. 2 1 1
  9. 2 2 3
  10. 3 1 2
  11. 3 2 2
  12. 3 3 3
  13. ;
  14. run;
复制代码
如何把每个个体(id)visit>1的x的最大值取出,放在visit=1的后面,结果如下:
id visit x fl
1 1 1 4
1 2 1 .
1 3 3 .
1 4 4 .
2 1 1 3
2 2 3 .
3 1 2 3
3 2 2 .
3 3 3 .



如能用data步实现最后,谢谢!

关键词:Visit visi sit isi 最大值
已有 1 人评分经验 收起 理由
eijuhz + 20 鼓励积极发帖讨论

总评分: 经验 + 20   查看全部评分

沙发
juicejune 发表于 2019-6-25 11:04:56
data bbb;set aaa;run;
proc sort data=bbb;by id visit;
run;
data c;set bbb;by id ;
if last.id;
run;
data c;set c;
if visit=1 then delete;
run;
data c;set c;
visitpass=1;
run;/*选出visit>1的个体,用visitpass标记*/
proc sort data=bbb;by id x;
run;
data d;set bbb;by id x;
if last.id;
run;
data d;set d;fl=x;run;/*选出x最大的个体*/
data cd;merge c d;by id;
run;
data cd;set cd;
if visitpass=. then delete;
run;
data cdd;set cd;keep id fl;run;
data eee;set bbb;by id ;
if first.id;
run;
data ccc;merge eee cdd;by id ;
run;
data ddd;merge ccc aaa;by id visit;run;
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 30 + 3 + 3 + 3 热心帮助其他会员

总评分: 论坛币 + 30  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

藤椅
banishurface 学生认证  发表于 2019-7-4 22:49:53
proc sort data=aaa(where=(visit>1)) out=bbb;by id visit x;run;
data bbb;
set bbb;
by id visit x;
if last.id;
visit=1;
rename x=fl;
run;
proc sort data=aaa;by id visit;run;
data result;
merge aaa(in=a) bbb(in=b);
by id visit;
if a;
run;
已有 1 人评分论坛币 收起 理由
admin_kefu + 30 精彩帖子

总评分: 论坛币 + 30   查看全部评分

板凳
zhlewis 发表于 2019-7-9 16:36:59
  1. proc sql;
  2.         create table bb as
  3.         select distinct id, 1 as visit, max(x) as max_x
  4.         from aaa
  5.         where visit>1
  6.         group by 1
  7.         order by 1,2
  8.         ;
  9. quit;
  10.        
  11. proc sort data=aaa;
  12.         by id visit;
  13. run;

  14. data aaa_;
  15.         merge aaa(in=a) bb;
  16.         by id visit;
  17.         if a;
  18. run;
复制代码

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

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