楼主: 拖鞋西西
2010 4

[程序分享] 求助 将多条随访数据合为一条 情况有点复杂 [推广有奖]

  • 0关注
  • 0粉丝

高中生

90%

还不是VIP/贵宾

-

威望
0
论坛币
275 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
159 点
帖子
5
精华
0
在线时间
70 小时
注册时间
2016-12-24
最后登录
2022-3-22

楼主
拖鞋西西 发表于 2018-5-3 15:22:39 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我想把多条随访数据合为一条,但是数据情况有点复杂,求助大家!

我的数据是这样子的:
QQ截图20180503145005.png

首先需要识别姓名相同的记录是否为同一个人,标准是时间差与年龄差的差值小于1即为同一个人(年龄差减时间差的绝对值小于1),然后将同一个人的多条记录合并为同一条记录。

比如数据中no1~no4虽然姓名相同,但根据时间差和年龄差的差值,并不是同一个人,根据我们的标准,no1和no2是同一个人,no3是一个人,no4是另外一个人,no5~no7是同一个人,no8和no9是同一个人,no10是另外一个人。

目前我的思路是根据判别标准将同一个人的no变量整理成一样的,然后根据no变量合并数据,想请教一下大家SAS语句该怎么写,感谢大家赐教!!

二维码

扫码加我 拉你入群

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

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


已有 1 人评分热心指数 收起 理由
eijuhz + 1 精彩帖子

总评分: 热心指数 + 1   查看全部评分

沙发
拖鞋西西 发表于 2018-5-4 08:27:28
不要沉啊不要沉

藤椅
Tigflanker 发表于 2018-5-5 08:59:59
首先,下次记得求助问题时,还是附一下可以编辑的数据源,否则别人得要把你图片的信息重新手打一遍;
另外如果你能附上做出来的结果(例如是excel编辑的)那就更好了。

我的理解是这样:例如obs 6和obs 7的时间差是大概3年、年龄差是3岁,就算是同一个人。

那还有个重要问题:你合并的标准也得写啊,是取同一个人第一时间的记录?还是把var都加起来?

板凳
Tigflanker 发表于 2018-5-5 09:44:29
  1. data have;
  2.   input no name $ date:yymmdd10. age var;
  3.   format date yymmdd10.;
  4.   year_align = year(date) - age;  * 时间对齐;
  5.   cards;
  6. 1 a 2016-3-2 27 11
  7. 2 a 2017-5-6 28 22
  8. 3 a 2016-9-1 45 55
  9. 4 b 2012-12-14 43 99
  10. 5 b 2013-4-5 44 222
  11. 6 b 2017-1-1 47 555
  12. ;run;

  13. proc sort data = have;
  14.   by name year_align;
  15. run;

  16. data want;
  17.   set have;

  18.   retain patient_id tmp 0;

  19.   if name ~= lag(name) or year_align - tmp > 1 then do;
  20.     tmp = year_align;
  21.         patient_id + 1;
  22.   end;

  23.   drop tmp year_align;
  24. run;
复制代码
我把最后一个patient的时间改多了一年,已区分出patient,剩下的你自己接着整啦

报纸
拖鞋西西 发表于 2018-5-7 08:52:35
Tigflanker 发表于 2018-5-5 08:59
首先,下次记得求助问题时,还是附一下可以编辑的数据源,否则别人得要把你图片的信息重新手打一遍;
另外 ...
太感谢了 感谢您的建议和语句

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-17 12:38