【问题标题】:Group by specific date sequence in r按r中的特定日期顺序分组
【发布时间】:2019-11-04 21:58:29
【问题描述】:

我有一张订单表 |地点 |日期,如果每个订单是在前一个订单的第二天(时差

输入:

| Order | Place | Date     |
|-------|-------|----------|
| 11    | A     | 01.11.19 |
| 11    | A     | 02.11.19 |
| 11    | A     | 05.11.19 |
| 22    | B     | 01.11.19 |
| 22    | D     | 02.11.19 |
| 22    | D     | 03.11.19 |
| 33    | A     | 01.11.19 |

输出:

| Order | Place | Date     | Count |
|-------|-------|----------|-------|
| 11    | A     | 01.11.19 | 2     |
| 11    | A     | 05.11.19 | 1     |
| 22    | B     | 01.11.19 | 1     |
| 22    | D     | 02.11.19 | 2     |
| 33    | A     | 01.11.19 | 1     |

【问题讨论】:

    标签: r dataframe difftime


    【解决方案1】:

    这是另一个使用dplyr的解决方案:

    library(dplyr)
    
    df1 %>% 
      mutate(Date = as.Date(Date, "%d.%m.%y")) %>% 
      group_by(Order, Place, DateLag = !((Date - lag(Date, default = first(Date)))>1)) %>% 
      summarise(Date = first(Date), Count = n()) %>% 
      ungroup %>% select(-DateLag) %>% 
      arrange(Order, Place, Date)
    
    ># # A tibble: 5 x 4
    >#   Order Place Date       Count
    >#   <int> <chr> <date>     <int>
    ># 1    11 A     2019-11-01     2
    ># 2    11 A     2019-11-05     1
    ># 3    22 B     2019-11-01     1
    ># 4    22 D     2019-11-02     2
    ># 5    33 A     2019-11-01     1
    

    数据:

    read.table(text=" Order  Place  Date     
     11     A      01.11.19 
     11     A      01.11.19 
     11     A      05.11.19 
     22     B      01.11.19 
     22     D      02.11.19 
     22     D      03.11.19 
     33     A      01.11.19", header=T, stringsAsFactors=F) -> df1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 2015-01-17
      • 1970-01-01
      • 1970-01-01
      • 2020-11-09
      • 2011-02-19
      • 1970-01-01
      相关资源
      最近更新 更多