如何在dplyr中执行groupby和计数出现次数
我在R中有以下数据帧如何在dplyr中执行groupby和计数出现次数,r,dplyr,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
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和R,然后按上面的方式粘贴
时间被视为平均值。
我如何在dplyr中完成它 以下是dplyr方法:
foo <- function(x) {y <- table(x); paste(rbind(y, names(y)), collapse = "")}
df %>%
group_by(truck_no) %>%
mutate(type = foo(type)) %>%
summarise_all(first)
## A tibble: 2 x 5
# truck_no start_time end_time ctr_no type
# <fctr> <fctr> <fctr> <fctr> <chr>
#1 ABC123 20-05-2016 06:53 20-05-2016 08:53 ERT09 2D2R
#2 ERT123 21-05-2016 06:53 21-05-2016 08:53 QRT34 1D1R
以下是dplyr方法:
foo <- function(x) {y <- table(x); paste(rbind(y, names(y)), collapse = "")}
df %>%
group_by(truck_no) %>%
mutate(type = foo(type)) %>%
summarise_all(first)
## A tibble: 2 x 5
# truck_no start_time end_time ctr_no type
# <fctr> <fctr> <fctr> <fctr> <chr>
#1 ABC123 20-05-2016 06:53 20-05-2016 08:53 ERT09 2D2R
#2 ERT123 21-05-2016 06:53 21-05-2016 08:53 QRT34 1D1R
您如何获得
ctr\u no
?根据我的理解,成为ERT09
和QRT34
是有意义的。另外,truck\u no
不应该是ABC123
和ERT123
?什么是“平均时间”?@docendodiscimus我认为你的答案是正确的。OP把预期的输出搞砸了IMO@Sotos,我暂时取消了我的答案。让我们看看OP是否会在某个时候做出澄清的回应。您如何获得ctr\U no?根据我的理解,成为ERT09
和QRT34
是有意义的。另外,truck\u no
不应该是ABC123
和ERT123
?什么是“平均时间”?@docendodiscimus我认为你的答案是正确的。OP把预期的输出搞砸了IMO@Sotos,我暂时取消了我的答案。让我们看看OP是否会在某个时候做出澄清的回应。你的结果与期望的结果不同。@Lyngbakr,你是对的。目前预期的输出似乎有点不清楚。您的结果与预期的结果不同。@Lyngbakr,您是对的。目前,预期产出似乎有点不清楚。