Расчет суммы дней по категориям - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть набор данных, и я хочу рассчитать промежуток дней, суммируемых для каждого уникального идентификатора, а также дни, которые охватывали одно из двух уникальных «действий» (STD, STD Modified).Я также хотел бы отображать данные в виде одной строки на уникальный идентификатор.Как бы я пошел для достижения этого?Заранее спасибо!

Желаемый результат:

Id      Days on STD     Days on STD Modified     Total
123         228                  0                228
321         85                   42               127

Данные:

structure(list(Id = c(123, 123, 321, 321, 321, 321), Action = c("STD", 
"STD", "STD", "STD", "STD Modified", "STD"), IDM.Start = structure(c(1427414400, 
1499299200, 1457740800, 1508371200, 1511913600, 1540166400), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), IDM.End = structure(c(1438214400, 
1508198400, 1458691200, 1511827200, 1515542400, 1543104000), class = c("POSIXct", 
"POSIXt"), tzone = "UTC")), row.names = c(NA, 6L), class = "data.frame")

1 Ответ

1 голос
/ 26 сентября 2019
library(tidyverse); library(lubridate)
df %>%
  mutate(days = (IDM.End - IDM.Start)/ddays(1)) %>%
  count(Id, Action, wt = days, name = "days") %>%
  spread(Action, days, fill = 0) %>%
  mutate(Total = STD + `STD Modified`)

## A tibble: 2 x 4
#     Id   STD `STD Modified` Total
#  <dbl> <dbl>          <dbl> <dbl>
#1   123   228              0   228
#2   321    85             42   127
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...