r - 按 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
如何创建两个新变量:
maxscore
- 其中,每EVENTID
标记 1 到PERSONID
最高INJURYSCORE
maxdiabetes
- perEVENTID
,如果其中任何一个PERSONID
患有糖尿病(糖尿病 = 1),则将 1 分配给所有其他PERSONID
人EVENTID
解决方案
这是使用ave
within的基本 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
推荐阅读
- java - 使用 spannable 分隔字符串中的单词
- r - 如何修改和保存 rnaturalearthdata::countries50 而不会丢失信息?
- git - 本地副本先于主副本
- python-3.x - 如何让脚本等待特定的按键 - Python 3
- karate - 如何验证响应至少有一个有效的数组数据?
- android - 适用于蓝牙音箱的 Android 蓝牙 A2dp 接收器
- python - 亲爱的津贴计算器 - Python3
- javascript - 进程:com.tarang.grocery,PID:7824 java.lang.NullPointerException:不能在 child() 中为参数 'pathString' 传递 null
- c# - 如何将 Azure AD 和非 Azure AD 令牌添加到同一个 .NET Core Api
- excel - 具有多个语句的 IF 函数 - 如果单元格包含“0”=“BE”,如果单元格大于“0”=“W”,如果单元格小于“0”=“L”