, (, Start End ):
library(data.table)
setDT(mydf)[, .(dates = seq.Date(Start,End,'day')) , by = .(Group,1:nrow(mydf))
][, .(count = uniqueN(dates)), by = Group][]
:
Group count
1: A 3
2: B 3
3: H 16
: Start End. uniqueN. , (. ), .
H . , , , 16.
R:
l <- mapply(seq.Date, mydf$Start, mydf$End, 1)
df2 <- data.frame(group = rep(mydf$Group,sapply(l,length)),
dates = unlist(l))
aggregate(dates ~ group, df2, function(x) length(unique(x)))
:
group dates
1 A 3
2 B 3
3 H 16
dates df2 , as.Date(unlist(l), origin = '1970-01-01') unlist(l).
:
mydf <- structure(list(Group = c("A", "A", "B", "B", "H", "H", "H", "H", "H"),
Start = structure(c(16567, 16567, 16436, 16436, 16443, 16443, 16448, 16442, 16447), class = "Date"),
End = structure(c(16569, 16569, 16438, 16438, 16444, 16444, 16450, 16452, 16457), class = "Date"),
Days = c(3L, 3L, 3L, 3L, 2L, 2L, 3L, 3L, 7L)),
.Names = c("Group", "Start", "End", "Days"), row.names = c(NA, -9L), class = "data.frame")