r语言 - 是否有一种方法可以删除基于两列的重复项,但在第三列中保留最高数量的重复项?



我想取这个数据集,如果它们具有相同的id和年龄(重复),则删除值,但保留具有最高月数的值。

ID|Age|Month|
1   25   7
1   25  12
2   18  10
2   18  11
3   12  10
3   25  10
4   19  10
5   10  2
5   10  3

结果是

ID|Age|Month
1   25   12
2   18   11
3   12   10
3   25   10
4   19   10
5   10    3

请注意,它删除了重复项,但保留了月数最高的版本。

作为解决方案选项

library(tidyverse)
df <- read.table(text = "ID Age Month 
1   25   7
1   25  12
2   18  10
2   18  11
3   12  10
3   25  10
4   19  10
5   10  2
5   10  3", header = T)
df %>% 
group_by(ID, Age) %>% 
slice_max(Month)
#> # A tibble: 6 x 3
#> # Groups:   ID, Age [6]
#>      ID   Age Month
#>   <int> <int> <int>
#> 1     1    25    12
#> 2     2    18    11
#> 3     3    12    10
#> 4     3    25    10
#> 5     4    19    10
#> 6     5    10     3

由reprex包(v1.0.0)创建于2021-02-11

使用dplyr包,解决方案:

df %>% 
+   group_by(ID, Age) %>%
+   filter(Month == max(Month))
# A tibble: 6 x 3
# Groups:   ID, Age [6]
ID   Age Month
<dbl> <dbl> <dbl>
1     1    25    12
2     2    18    11
3     3    12    10
4     3    25    10
5     4    19    10
6     5    10     3

相关内容

  • 没有找到相关文章

最新更新