我使用R创建一个包含来自另一个表的数据的表,我正在处理下一个变量:
-PRODUCT ID
-CLASIFICATION
-DATE例如,我的原产地表:
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的原因是一个动态的领域,它可以永远改变。产品标识的一行。
任何帮助都会很好。
谢谢!
发布于 2020-07-21 19:10:25
您可以在slice_max()中使用dplyr (在1.0.0版本之后取代top_n() )来选择最近的日期。
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))发布于 2020-07-21 18:41:41
假设您的日期没有排序,下面这样的内容应该可以工作:
library(dplyr)
df %>%
arrange(desc(Date)) %>%
group_by(id) %>%
slice(1) %>%
ungroup()https://stackoverflow.com/questions/63020956
复制相似问题