使用 r 中的日期变量获取最近的观察

Get the most recent observation using date variable in r

我正在使用 R 使用来自另一个 table 的数据创建一个 table,我正在处理下一个变量:

-PRODUCT ID 
-CLASIFICATION
-DATE

比如我的出身table:

product id   Clasification   Date
10000567        B+         12-12-2020
10000123        C+         26-11-2020
10000567        A+         02-11-2020
10000222        A+         09-10-2020
10000123        B++        21-09-2020
10000222        A++        10-09-2020

问题是我需要为我的产品 ID 获取最新的分类,因为它是一个动态字段,它可以随时更改。产品 ID 一行。

任何帮助都会很棒。

谢谢!

假设您的日期没有排序,类似下面的内容应该可以工作:

library(dplyr)
df %>%
 arrange(desc(Date)) %>%
 group_by(id) %>%
 slice(1) %>%
 ungroup()

您可以在 dplyr 中使用 slice_max(),它取代 top_n() 版本 1.0.0 之后的 select 最近日期。

df %>%
  mutate(Date = as.Date(Date, "%d-%m-%Y")) %>%
  group_by(product_id) %>%
  slice_max(Date, n = 1) %>% 
  ungroup()

# # A tibble: 3 x 3
#   product_id Clasification Date      
#        <int> <chr>         <date>    
# 1   10000123 C+            2020-11-26
# 2   10000222 A+            2020-10-09
# 3   10000567 B+            2020-12-12

数据

df <- structure(list(product_id = c(10000567L, 10000123L, 10000567L, 
10000222L, 10000123L, 10000222L), Clasification = c("B+", "C+", 
"A+", "A+", "B++", "A++"), Date = c("12-12-2020", "26-11-2020", 
"02-11-2020", "09-10-2020", "21-09-2020", "10-09-2020")), class = "data.frame", row.names = c(NA, -6L))