Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 按ID标识最高值,然后将其分配给所有共享ID_R - Fatal编程技术网

R 按ID标识最高值,然后将其分配给所有共享ID

R 按ID标识最高值,然后将其分配给所有共享ID,r,R,我有下表,在每个EVENTID中,有几个PERSONID: 如何创建两个新变量: maxscore-根据EVENTID,对伤害分数最高的人,该分数为1 maxdiabetes-每个EVENTID,如果其中任何一个PERSONID的糖尿病=1,则该EVENTID中的所有其他PERSONID都将分配1 三角帆 图书馆弹琴 dat%>% 组\u按事件ID%>% 变异 maxscore=+INJURYSCORE==maxINJURYSCORE, maxdiabetes=+anyDIABETES>0 %>

我有下表,在每个EVENTID中,有几个PERSONID:

如何创建两个新变量:

maxscore-根据EVENTID,对伤害分数最高的人,该分数为1 maxdiabetes-每个EVENTID,如果其中任何一个PERSONID的糖尿病=1,则该EVENTID中的所有其他PERSONID都将分配1 三角帆 图书馆弹琴 dat%>% 组\u按事件ID%>% 变异 maxscore=+INJURYSCORE==maxINJURYSCORE, maxdiabetes=+anyDIABETES>0 %>% 解组 一个tibble:6x6 PERSONID EVENTID INJURYSCORE DIABETES maxscore maxdiabetes 222 A734 3 0 1 2353 A734 4 1 1 1 3 45 B823 5 1 1 1 4423 B283 2 1 1 1 5232B2831001 6432 Y8210 数据表 图书馆数据表 datDT 0,by=EVENTID][] PERSONID EVENTID INJURYSCORE DIABETES maxscore maxdiabetes 1:222 A734 3 0 1 2:353A73441 3:45 B823 5 1 1 4:423 B283 2 1 5:232 B283 1 0 1 6:432Y821010 资料

蒂迪维尔酒店 图书馆弹琴 dat%>% 组\u按事件ID%>% 变异 maxscore=+INJURYSCORE==maxINJURYSCORE, maxdiabetes=+anyDIABETES>0 %>% 解组 一个tibble:6x6 PERSONID EVENTID INJURYSCORE DIABETES maxscore maxdiabetes 222 A734 3 0 1 2353 A734 4 1 1 1 3 45 B823 5 1 1 1 4423 B283 2 1 1 1 5232B2831001 6432 Y8210 数据表 图书馆数据表 datDT 0,by=EVENTID][] PERSONID EVENTID INJURYSCORE DIABETES maxscore maxdiabetes 1:222 A734 3 0 1 2:353A73441 3:45 B823 5 1 1 4:423 B283 2 1 5:232 B283 1 0 1 6:432Y821010 资料


dat这里有一个在变换中使用ave的基本R选项,例如

  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

下面是一个在变换中使用ave的基本R选项,例如

  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
我们可以使用as.integer

-输出

# A tibble: 6 x 6
# Groups:   EVENTID [4]
#  PERSONID EVENTID INJURYSCORE DIABETES maxscore maxidiabetes
#     <int> <chr>         <int>    <int>    <int>        <int>
#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
数据 我们可以使用as.integer

-输出

# A tibble: 6 x 6
# Groups:   EVENTID [4]
#  PERSONID EVENTID INJURYSCORE DIABETES maxscore maxidiabetes
#     <int> <chr>         <int>    <int>    <int>        <int>
#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
数据
对于data.table解决方案,您可以使用datDT[,:=maxscore=+INJURYSCORE==maxINJURYSCORE,maxdiabetes=+anyDIABETES>0,by=EVENTID]同时创建两列。当然可以,也可以使用[,cmaxscore,maxdiabetes:=.val1,val2]。对于data.table解决方案,您可以使用datDT同时创建两列[,:=maxscore=+INJURYSCORE==maxINJURYSCORE,maxdiabetes=+anyDIABETES>0,by=EVENTID]当然可以,也可以使用[,cmaxscore,maxdiabetes:=.val1,val2]。有任何答案解决了您的问题吗?有任何答案解决了您的问题吗?
# A tibble: 6 x 6
# Groups:   EVENTID [4]
#  PERSONID EVENTID INJURYSCORE DIABETES maxscore maxidiabetes
#     <int> <chr>         <int>    <int>    <int>        <int>
#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
df1 <- structure(list(PERSONID = c(222L, 353L, 45L, 423L, 232L, 432L
), EVENTID = c("A734", "A734", "B823", "B283", "B283", "Y821"
), INJURYSCORE = c(3L, 4L, 5L, 2L, 1L, 1L), DIABETES = c(0L, 
1L, 1L, 1L, 0L, 0L)), class = "data.frame", row.names = c(NA, 
-6L))