首页 > 解决方案 > 按 ID,确定最高值,然后将其分配给所有共享 ID

问题描述

我有下表,每个EVENTID都有几个PERSONID

PERSONID    EVENTID  INJURYSCORE  DIABETES
222         A734     3            0
353         A734     4            1
45          B823     5            1
423         B283     2            1
232         B283     1            0
432         Y821     1            0

如何创建两个新变量:

  1. maxscore- 其中,每EVENTID标记 1 到PERSONID最高INJURYSCORE
  2. maxdiabetes- per EVENTID,如果其中任何一个PERSONID患有糖尿病(糖尿病 = 1),则将 1 分配给所有其他PERSONIDEVENTID

标签: r

解决方案


这是使用avewithin的基本 R 选项transform,例如,

transform(
  df,
  maxscore = +(ave(INJURYSCORE,EVENTID,FUN = max)==INJURYSCORE),
  maxdiabetes = ave(DIABETES,EVENTID,FUN = any)
)

这使

  PERSONID EVENTID INJURYSCORE DIABETES maxscore maxdiabetes
1      222    A734           3        0        0           1
2      353    A734           4        1        1           1
3       45    B823           5        1        1           1
4      423    B283           2        1        1           1
5      232    B283           1        0        0           1
6      432    Y821           1        0        1           0

推荐阅读