如何进行groupby并计算dplyr中出现的次数

时间:2017-09-08 12:10:14

标签: r dplyr

我在R

中有以下数据框
 truck_no     start_time         end_time           ctr_no    time     type
  ABC123      20-05-2016 06:53   20-05-2016 08:53   ERT09      1.67      D
  ABC123      20-05-2016 06:53   20-05-2016 08:53   TRT12      1.67      R
  ABC123      20-05-2016 06:53   20-05-2016 08:53   ERT34      1.67      R
  ABC123      20-05-2016 06:53   20-05-2016 08:53   ERT33      1.67      D
  ERT123      21-05-2016 06:53   21-05-2016 08:53   QRT34      2.67      R
  ERT123      21-05-2016 06:53   21-05-2016 08:53   PRT33      2.67      D

现在我想要的数据框是

 truck_no     start_time         end_time           ctr_no   time    type
  ABC123      20-05-2016 06:53   20-05-2016 08:53   ERT09    1.67    2D2R
  ABC123      20-05-2016 06:53   20-05-2016 08:53   TRT12    2.67    1R1D

我想计算D's and R's并以上述方式粘贴它 时间是平均值。 我怎么能在dplyr中做到这一点?

1 个答案:

答案 0 :(得分:4)

这是一个dplyr方法:

truck_no

如果您希望开始和结束时间是df %>% group_by(truck_no) %>% mutate_at(vars(ends_with("_time")), ~mean(as.POSIXct(as.character(.), format="%d-%m-%Y %H:%M"))) %>% mutate(type = foo(type)) %>% summarise_all(first) ## A tibble: 2 x 5 # truck_no start_time end_time ctr_no type # <fctr> <dttm> <dttm> <fctr> <chr> #1 ABC123 2016-05-20 06:53:00 2016-05-20 08:23:00 ERT09 2D2R #2 ERT123 2016-05-21 06:53:00 2016-05-21 08:53:00 QRT34 1D1R 的平均值,您可以使用以下扩展名:

compile 'com.android.support.constraint:constraint-layout:1.0.2'