我一直在try 按个人的最近日期对下面的数据进行排序,然后只保留最近日期的行.

df <- data.frame (Person  = c("Alex", "Alex", "Beth", "Beth"),
                  Date = c("01JAN2021", "15JUL2022", "31DEC2020", "15MAR2020"))

我运行了下面的代码,但意识到它没有正确排序,因为它只是直接按数字然后按字母顺序读取字符串.

df_updated <- df %>%
  group_by(Person) %>%
  arrange(desc(Date)) %>%
  filter(row_number()==1)

当我意识到这不起作用时,我try 查找代码以按索引拆分值,以便创建Day、Month和Year列.我遇到了strplit()和Sub(),但都不能工作.我还try 了as.POSIX*函数,但在文档中找不到我的日期类型.我想,一旦我可以将它转换为日期格式,我就可以正确地排序,然后分组和筛选最近的日期.

推荐答案

您可以使用as.Date(x, format = "%d%B%Y")将字符串转换为日期,然后使用dplyr包中的slice_max()来获取最新条目.

library(dplyr)

df <- data.frame (Person  = c("Alex", "Alex", "Beth", "Beth"),
                  Date = c("01JAN2021", "15JUL2022", "31DEC2020", "15MAR2020"))

df$Date <- as.Date(df$Date, format = "%d%B%Y")

df_updated <- df %>%
  slice_max(order_by = Date, by = Person)

结果:

> df_updated
  Person       Date
1   Alex 2022-07-15
2   Beth 2020-12-31

R相关问答推荐

从多个前置日期中获取最长日期

在边界外添加注释或标题

如何求解arg必须为NULL或deSolve包的ode函数中的字符向量错误

在df中保留原始变量和新变量

使用整齐的计算(curl -curl )和杂音

在R中使用Scale_y_Break后更改y轴标签

将多列合并为单独的名称—值对

矩阵的堆叠条形图,条形图上有数字作为标签

在RStudio中堆叠条形图和折线图

如何在R forestplot中为多条垂直线分配唯一的 colored颜色 ?

在使用bslb和bootstrap5时,有没有办法更改特定dt行的 colored颜色 ?

比较理论阿尔法和经验阿尔法

以NA为通配符的R中的FULL_JOIN以匹配其他数据中的任何值.Frame

是否有新方法来更改Facet_WRAP(Ggplot2)中条文本的文本 colored颜色 ?

从多面条形图中删除可变部分

如何将这个小列表转换为数据帧?

如何根据未知数的多列排除重复行

如何根据其他列中的两个条件来计算数据帧中的行之间的差异?

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

图中显示错误 colored颜色 的图例geom_sf