首页 > 解决方案 > 在 R 中聚合条件

问题描述

我有一个数据框:

df <- data.frame(Xdate = c("21-jul-2020", "29-jul-2020", "20-jul-2020", "13-may-2020" ),
                 names = c("peter", "lisa","peter", "lisa"),
                 score = c(1,3,5,7))

获取最新分数的最优雅方式是什么:

df_result <- data.frame(names = c("peter", "lisa"),
                        score = c(1, 3))

peter 的最新分数是 1 并且达到了21-jul-2020 lisa 的最新分数是 3 并且达到了29-jul-2020.

标签: r

解决方案


您可以使用取代version 之后slice_max()的 in来选择最近的日期。dplyrtop_n()1.0.0

library(dplyr)

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

# # A tibble: 2 x 3
#   Xdate      names score
#   <date>     <chr> <dbl>
# 1 2020-07-29 lisa      3
# 2 2020-07-21 peter     1

推荐阅读