我想根据某些标准删除重复项.

Animal<-c("bird","Bird ","Dog","Cat F","Lion","Lion","Lion","dog","Horse","cat", "Lion")

A_date<-c("02-08-2020","20-06-2018","01-01-2015","10-07-2021","20-06-2018","15-08-2019","05-08-2013","20-06-2010","15-11-2016","22-03-2022","15-05-2019")

ID<-c("T1", "T1","T1","T2","T2","T3","T3","T4","T4","T5","T5")

Mydata<-data.frame(Animal, A_date,col_1)

 Animal   A_date       ID
bird     02-08-2020    T1
Bird     20-06-2018    T1
Dog      01-01-2015    T1
Cat F    10-07-2021    T2
Lion     20-06-2018    T2
Lion     15-08-2019    T3
lion     05-08-2013    T3
dog      20-06-2010    T4
Horse    15-11-2016    T4
cat      22-03-2022    T5
Lion     15-05-2019    T5

我想删除重复的行,以便只保留具有最新日期pr.ID的行.例如,在上表中,Lion以相同的ID出现了3次.所以我只想保留Lion 15-08-2019 T3个,但我想保留ID为T5的Lion.

最终结果应该如下所示:

    Animal   A_date       ID
    Dog      01-01-2015    T1
    bird     02-08-2020    T1
    Dog      01-01-2015    T1
    Cat F    10-07-2021    T2
    Lion     15-08-2019    T3
    dog      20-06-2010    T4
    Horse    15-11-2016    T4
    cat      22-03-2022    T5
    Lion     15-05-2019    T5

我研究的数据非常大,ID从T1到T20.

library(lubridate)
library(dplyr)

Mydata <- Mydata %>%
  mutate(Animal = toupper(Animal), A_date = lubridate::dmy(A_date)) %>%
  arrange(A_date)
Mydata %>%
  filter(!duplicated(Animal, fromLast = TRUE))

我得到的结果

Animal A_date ID
DOG   <NA>    T1
HORSE <NA>    T4
BIRD  <NA>    T1
LION  <NA>    T3
BIRD  <NA>    T1
CAT F <NA>    T2
CAT   <NA>    T5

这不是我想要的最终结果.

推荐答案

一种 Select 是按IDAnimal分组,然后进行安排,使每个组的最新日期位于该组的顶部(即最新日期),然后是该行的slice.

library(lubridate)
library(dplyr)

Mydata %>%
  mutate(Animal = trimws(toupper(Animal)), A_date = lubridate::dmy(A_date)) %>%
  group_by(ID, Animal) %>%
  arrange(ID, Animal, desc(A_date)) %>%
  slice(1)

Output

  Animal A_date     ID   
  <chr>  <date>     <chr>
1 BIRD   2020-08-02 T1   
2 DOG    2015-01-01 T1   
3 CAT F  2021-07-10 T2   
4 LION   2018-06-20 T2   
5 LION   2019-08-15 T3   
6 DOG    2010-06-20 T4   
7 HORSE  2016-11-15 T4   
8 CAT    2022-03-22 T5   
9 LION   2019-05-15 T5  

R相关问答推荐

如何在四进制仪表板值框中显示值(使用shiny 的服务器计算)

R形式的一维数字线/箱形图样式图表

ggplot geom_smooth()用于线性回归虚拟变量-没有回归线

r替换lme S4对象的字符串的一部分

单个轮廓重叠条的单独图例

在GGPLATE中将突出的点放在前面

给定开始日期和月份(数字),如何根据R中的开始日期和月数创建日期列

我如何go 掉盒子图底部的数字?

根据纬度和距离连接两个数据集

手动指定从相同数据创建的叠加图的 colored颜色

有没有办法一次粘贴所有列

有没有办法定制Plot(allEffects())面板标题?

Rmarkdown::Render vs Source()

自定义交互作用图的标签

是否有一个R函数可以输出在输入的字符向量中找到的相应正则表达式模式?

计算来自单独分组的分幅的值的百分位数

有没有办法更改ggplot2中第二个y轴的比例限制?

希望解析和复制R中特定模式的数据

如何使用ggsurvfit包更改风险表中的标签名称?

Gggvenn为Venn增加了不存在的价值