ОК, здесь происходит какая-то странность, но у меня есть кое-что, что сработает для меня.
Отработка предложения novica
Я реализовал это
d4 <- data %>%
group_by(name) %>%
dplyr::summarise(totalTime = as.period(seconds(sum(as.numeric(duration1))), unit = "hours"))
Вот странная часть. Это возвращает ожидаемое значение в первой группе и неправильное значение во второй группе.
имя | totalTime
один | 44H 54M 22S
два | 45S
Я попытался устранить неполадку безуспешно, поэтому я пошел дальше и в итоге получил это не очень элегантное решение, которое работает.
d4 <- data %>%
group_by(name) %>%
mutate(duration2 = as.numeric(duration1)) %>% # as.numeric converts hms to seconds
dplyr::summarise(timeInHours = sum(duration2)*0.0002777777784,
hours = floor(`timeInHours`),
minutes1 = (timeInHours - hours)*60,
minutes = floor(minutes1),
seconds = round((minutes1-minutes) *60, digits = 0),
duration = paste0(hours, "H ", minutes, "M ", seconds, "S"),
hms = hms(duration))
После выбора интересующих вас столбцов вы можете получить имя | продолжительность
один | 44H 54M 22S
два | 8H 45M 45S
По сути, здесь применяется математика для преобразования секунд в часы, а затем преобразования остатка в минуты и напоминания в секунду. Что похоже на окольный способ добавления значений HMS
Мне не нравится это решение, но я хотел бы придерживаться структуры dplyr, поэтому я собираюсь пока остановиться на ней.
Если я придумаю что-то новое, я передам это.