【问题标题】:calculate difference between 2 dates and print the between dates计算两个日期之间的差异并打印日期之间
【发布时间】:2018-09-26 17:45:17
【问题描述】:
    st_day<-c(1,5,10)
endday<-c(4,9,15)
d<-c(1,2,3)
data<-cbind(st_day,endday,d)

days1<-c(1:15)
dose1<-rep(c(1,2,3),each=5)
result <- cbind(days1,dose1)

您好,我有 2 列带有开始和结束日期的列,并且相应的剂量是在一定时间内施用的。如何计算差异并打印出这两个日期之间的持续时间。我已经给出了预期结果的示例代码。

谢谢。

【问题讨论】:

  • 我认为result 有错误。 'dose1' 的第 5 个元素应该是 2 还是 1

标签: r dplyr lubridate difftime


【解决方案1】:

我们可以使用Map得到两个向量的对应序列成list,然后cbindunlistted'lst'和replicated'd'(基于@ 987654326@'lst'

lst <- Map(`:`, st_day, endday)
out <- cbind(unlist(lst), rep(d, lengths(lst)))

【讨论】:

  • OP 的 result 不同,但我猜他们犯了错误。
  • @Frank 看起来 OPs 结果有 5 也有 'd' 值为 1
  • 它适用于列表,但不适用于日期和时间格式。我在 .Primitive(":")(dots[[1L]][[7L]],dots[[2L]][[7L]]) 中收到错误错误:NA/NaN 参数
  • @Ravula 您可以使用seq 代替: ... data %&gt;% data.frame %&gt;% mutate(days = map2(st_day, endday, ~seq(.x, .y, by="day"))) %&gt;% unnest %&gt;% select(-st_day, -endday) 或类似名称。如果您无法弄清楚,您应该发布一个带有该案例的示例。
  • @RavulaAbhigyan 为此,您可能需要seq,即lst &lt;- Map(seq, from = st_day, to = end_day, by = "1 day")(假设'st_day'和'end_day'是Date
猜你喜欢
  • 1970-01-01
  • 2021-11-25
  • 2011-08-01
  • 2013-02-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
相关资源
最近更新 更多