【问题标题】:Find the newest entry per client in R在 R 中查找每个客户端的最新条目
【发布时间】:2020-03-10 15:43:33
【问题描述】:

我正在尝试过滤包含三列的数据框:

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

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

有什么办法可以做到吗?

【问题讨论】:

    标签: r dataframe filter subset unique


    【解决方案1】:

    让我先创建一个虚拟数据框

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 2020-12-18
      • 1970-01-01
      相关资源
      最近更新 更多