使用 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))
我正在使用 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))