子集删除重复的字段组合,保留得分最高的字段组合
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。
希望我做对了。
我正在学习 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。
希望我做对了。