我想重新排列我的数据顺序.我的数据集如下所示:

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","T15","T15")

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

 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    T15
Lion     15-05-2019    T15

我使用下面的代码删除了重复的行,这样就只剩下带有最新日期pr.ID的行.

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)

输出如下所示:

  A tibble: 9 x 3
# Groups:   ID, Animal [9]
  Animal A_date     ID   
  <chr>  <date>     <chr>
1 BIRD   2018-06-20 T1   
2 DOG    2015-01-01 T1   
3 CAT    2022-03-22 T15  
4 LION   2019-05-15 T15  
5 CAT F  2021-07-10 T2   
6 LION   2018-06-20 T2   
7 LION   2013-08-05 T3   
8 DOG    2010-06-20 T4   
9 HORSE  2016-11-15 T4 

我想更改订单,以便订单应该是最高ID、最新日期的pr.ID.

 Animal    A_date     ID   
      <chr>  <date>     <chr>
    CAT    2022-03-22 T15   
    LION   2019-05-15 T15
    HORSE  2016-11-15 T4    
    DOG    2010-06-20 T4   
    LION   2019-08-15 T3   
    CAT F  2021-07-10 T2   
    LION   2018-06-20 T2
    BIRD   2020-08-02 T1   
    DOG    2015-01-01 T1   
    

关于如何得到这个结果有什么建议吗?

推荐答案

从最后一次输出Mydata开始:

Mydata <- Mydata %>% 
  ungroup %>% 
  arrange(desc(as.numeric(gsub("T","",ID))),
          desc(A_date))

输出

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

我首先删除了分组,这样我可以安排所有行,然后删除了ID中的T,将其转换为数字,以降序排列,然后在日期上再次安排,就像你之前做的那样.

ID为T3的LION和BIRD T1的日期在预期输出中可能不正确.如果不是这样,告诉我,因为这意味着我不理解你的问题.

R相关问答推荐

在R中为马赛克图中的每个字段着色

多个过滤器内的一个盒子在仪表板Quarto

我如何才能找到FAMILY=POISSON(LINK=&Q;LOG&Q;)中的模型预测指定值的日期?

在嵌套列表中查找元素路径的最佳方法

仅在Facet_WRAP()中的相应方面包含geom_abline()

展开对数比例绘图的轴(添加填充)

停止ggplot将多行减少到一行

'使用`purrr::pwalk`从嵌套的嵌套框架中的列表列保存ggplots时出现未使用的参数错误

ggplot R:X,Y,Z使用固定/等距的X,Y坐标绘制六边形热图

R基于变量组合创建新的指标列

我正在try 创建一个接近cos(X)的值的While循环,以便它在-或+1-E10范围内

替换在以前工作的代码中有x行&q;错误(geom_sf/gganimate/dow_mark)

如何在R中的两列以上使用联合(&U)?

是什么打破了此Quarto仪表板中的工具提示?

如何创建直方图与对齐的每月箱?

带查找数据的FCT_REORDER.帧

为哑铃图准备日期数据

在R中按组计算每个数据帧列中唯一值的简明方法是什么?

如何避免在从.xlsx导入的数据框中的新列名之后添加前列名?

符号作为模型摘要中的系数名称