У меня есть следующий df
Id a_min_date a_max_date b_min_date b_max_date c_min_date c_max_date d_min_date a_max_date
1 2014-01-01 2014-01-10 2014-01-05 2014-01-15 NA NA 2014-02-20 2014-05-01
2 2014-02-01 2014-02-10 NA NA 2015-02-20 2015-03-01 NA NA
Я добавил интервалы каждой группы (a, b, c, d) по ID. Во-первых, я преобразовал даты начала и окончания в интервалы смазки.
Я хочу построить интервалы и рассчитать разницу во времени в днях между концом каждой группы и началом следующей группы, если нет совпадений.
Я попытался использовать пакет IRanges и преобразовал даты в целые числа (как здесь используется (ссылка) ), но у меня не работает.
ir <- IRanges::IRanges(start = as.integer((as.Date(df$a_min_date))), end = as.integer((as.Date(df$a_max_date))))
bins <- disjointBins(IRanges(start(ir), end(ir) + 1))
dat <- cbind(as.data.frame(ir), bin = bins)
ggplot(dat) +
geom_rect(aes(xmin = start, xmax = end,
ymin = bin, ymax = bin + 0.9)) +
theme_bw()
Я получил эту ошибку для моего оригинального df:
Error in .Call2("solve_user_SEW0", start, end, width, PACKAGE = "IRanges") :
solving row 1: range cannot be determined from the supplied arguments (too many NAs)
У кого-то есть другое решение, использующее другие пакеты?