在R中查找每个客户端的最新条目



我正在尝试筛选一个数据帧,其中有三列:

  1. 日期(格式:"日/月/年"(
  2. 客户端名称
  3. 客户在特定产品上的支出

我想过滤这个df,这样我就只能获得客户端购买的最新数据

有什么办法我能做到这一点吗?

让我首先创建一个伪数据帧

library(dplyr)
names <- c("A", "B", "C", "D")
client <- sample(names, size=20, replace=T)
dates <- sample(seq(as.Date('1999/01/01'), as.Date('2000/01/01'), by="day"), 20)
amount <- sample(c(0:1000), size=20)
df <- data.frame(dates, client, amount)

所以数据帧看起来像这个

dates client amount
1  1999-08-21      A    632
2  1999-08-06      B    449
3  1999-03-20      B    402
4  1999-05-15      B    557
5  1999-04-29      D    960
6  1999-03-07      A    977
7  1999-12-02      D    106
8  1999-12-08      D    891
9  1999-12-06      B    375
10 1999-03-28      C    509
11 1999-07-27      C    722
12 1999-02-01      D    923
13 1999-02-20      B    517
14 1999-12-17      B    487
15 1999-11-27      C    486
16 1999-05-26      B    873
17 1999-01-11      A    493
18 1999-08-16      A    620
19 1999-03-17      B    899
20 1999-03-01      C    297

然后你可以获得过滤数据

result <- df %>% 
group_by(client) %>% 
filter(dates == max(dates))
result

这将给您以下结果。

dates      client amount
<date>     <fct>   <int>
1 1999-08-21 A         632
2 1999-12-08 D         891
3 1999-12-17 B         487
4 1999-11-27 C         486

最新更新