Сгруппируйте столбец и найдите его сумму и количество - PullRequest
1 голос
/ 31 марта 2020

Фон: У меня есть набор данных, df,

  Date                          Duration


 1/2/2020 5:00:00 PM            20
 1/2/2020 5:30:01 PM            30
 1/2/2020 6:00:00 PM            10
 1/5/2020 7:00:01 AM            5
 1/6/2020 8:00:00 AM            2
 1/6/2020 9:00:00 AM            8

Требуемый выход:

 Date                 Total_Duration         Count

1/2/2020                60                     3
1/5/2020                5                      1
1/6/2020                10                     2

Dput:

 structure(list(Date = structure(1:6, .Label = c("1/2/2020 5:00:00 PM", 
 "1/2/2020 5:30:01 PM", "1/2/2020 6:00:00 PM", "1/5/2020 7:00:01 AM", 
 "1/6/2020 8:00:00 AM", "1/6/2020 9:00:00 AM"), class = "factor"), 
 Duration = c(20L, 30L, 10L, 5L, 2L, 8L)), class = "data.frame", row.names = c(NA, 
-6L))

Что я пробовал:

 library(dplyr)
 df %>% group_by(Date)  %>% add_tally() %>%
 summarize(Duration) 

Любое руководство будет полезно.

1 Ответ

2 голосов
/ 31 марта 2020

Мы можем получить только часть Date из «Date» после преобразования в «DateTime» с dmy_hms (при условии, что формат DD/MM/YYYYY HH::MM:SS), использовать его как переменную группировки и получить sum of ' Duration 'и' Count 'как n()

library(dplyr)
library(lubridate)
df %>%
    group_by(Date = as.Date(dmy_hms(Date))) %>% 
    summarise(Total_Duration = sum(Duration), Count = n())
# A tibble: 3 x 3
#  Date       Total_Duration Count
#  <date>              <int> <int>
#1 2020-02-01             60     3
#2 2020-05-01              5     1
#3 2020-06-01             10     2
...