子集删除重复的字段组合,保留得分最高的字段组合

Subset removing duplicated field combinations keeping the one with highest score

我正在学习 R,欢迎任何帮助。

我需要清理我的数据,删除项目雨量器的重复组合。 我的数据有更多的变量,但我提供了一个简化版本:

ID_project <- c(1,1,1,1,2,2,2,2)
ID_raingauge <- c("A","B","B","B","A","A","B","C")
COMB_check <- c("|","|","ok","ok","|","ok","|","|")
score<- c(0.7,0.5,1.2,0.3,0.4,0.1,0.6,1.4)
mydata <- data.frame(ID_project,ID_raingauge,COMB_check,score)

ID_project ID_rainguage COMB_check score
======
1         A           |        0.7
1         B           |        0.5
1         B           ok       1.2
1         B           ok       0.3
2         A           |        0.4
2         A           ok       0.1
2         B           |        0.6
2         C           |        1.4

在某些情况下,对于 ID_project 和 ID_raingauge 的每个组合,我们有不止一个分数。 您可以注意到 COMB_check 中的重复组合。第一次出现一个组合 COMB_check= "|",而具有相同组合的下一行 COMB_check="ok".

我想获得相同的数据,但每个组合只有一个示例 (ID_project-ID_raingauge)。 我需要保留得分最高的那个。示例结果为:

ID_project ID_rainguage COMB_check score
======
1         A           |        0.7
1         B           ok       1.2
2         A           |        0.4
2         B           |        0.6
2         C           |        1.4

提前致谢

   library(dplyr)   
mydata %>% group_by(ID_project,ID_raingauge) %>% 
      summarise(max(score))

结果

     ID_project ID_raingauge `max(score)`
       <dbl> <chr>               <dbl>
1          1 A                     0.7
2          1 B                     1.2
3          2 A                     0.4
4          2 B                     0.6
5          2 C                     1.4

如果不清楚,我会解释我做什么

很快你想通过 2 个特定的列找到最大分数,所以我将这些列分组并创建了 table,它只是分数的最大值 table。

希望我做对了。