Суммарные значения для перекрывающихся дат для каждого идентификатора - PullRequest
1 голос
/ 06 февраля 2020

Вот вопрос, который я нашел, очень похож на мой, но даты начала и окончания могут иногда совпадать ( Найти перекрывающиеся даты для каждого идентификатора и создать новую строку для перекрытия ). Я хочу комментировать и спрашивать напрямую, но у меня нет репутации старше 15.

Предположим, данные выглядят так (скопировано с Uwe):

library(data.table)
DT <- fread(
  "ID    date1         date2       Value
15  2003-04-05  2003-05-06      1
15  2003-04-20  2003-06-20      1
16  2001-01-02  2002-03-04      2
17  2003-03-05  2007-02-22      1   
17  2005-04-15  2014-05-19      2"
)
cols <- c("date1", "date2")
DT[, (cols) := lapply(.SD, as.IDate), .SDcols = cols]

Что я хочу получить, так это :

ID    date1         date2       Value
15  2003-04-05  2003-04-19      1
15  2003-04-20  2003-05-06      2
15  2003-05-07  2003-06-20      1
17  2003-03-05  2005-04-14      1   
17  2005-04-15  2007-02-22      3
17  2007-02-23  2014-05-19      2

, где даты начала и окончания не перекрываются.

Кроме того, это первый шаг от Уве, может кто-нибудь сказать мне, что здесь означает -1L? Я понимаю, что tmp - это временный вектор, но зачем нам -1?

library(data.table)
options(datatable.print.class = TRUE)
breaks <- DT[, {
  tmp <- unique(sort(c(date1, date2)))
  .(start = head(tmp, -1L), end = tail(tmp, -1L))
  }, by = ID]
breaks

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...