【问题标题】:Subset removing duplicated field combinations keeping the one with highest score [duplicate]删除重复字段组合的子集,保留得分最高的字段组合[重复]
【发布时间】:2021-03-15 13:20:32
【问题描述】:

我正在学习 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

提前谢谢你

【问题讨论】:

    标签: r filter duplicates subset combinations


    【解决方案1】:
       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 个特定列找到最高分数,所以我将这些列分组并创建了一个只有分数表最大值的表。

    我希望我做对了。

    【讨论】:

    • 感谢 Fatih 的快速回答。这非常适合我的数据的简化版本。但是,我只获取了 3 个字段(ID_project、ID_raingauge 和 max(score) 的数据。如何编写它以保留其余字段?
    • 只需将汇总更改为过滤器。 mydata %>% group_by(ID_project,ID_raingauge) %>% filter(score == max(score))
    • 效果很好,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多