r - 两个日期之间的差异,不包括周末

标签 r

我的日期框架中有两个日期列。我可以使用以下方法找到这些日期之间的差异:

issues <- transform(issues, duration = difftime(strptime(close_date, format="%d.%m.%Y"), 
                                                strptime(created_on, format = "%d.%m.%Y"), units="days"))

有没有办法找到不包括周末(周六和周日)的问题的持续时间?

更新

我曾尝试使用 @agstudy 解决方案:
getDuration <- function(d1, d2) {  
  myDays <- seq.Date(to = as.Date(d2, format="%d.%m.%Y"), 
                     from = as.Date(d1, format = "%d.%m.%Y"), by=1)
  result <- length(myDays[!is.weekend(myDays)])
  return(result)
}

issues <- transform(issues, duration = getDuration(created_on, close_date))

但得到错误:
Error in seq.Date(to = as.Date(d2, format = "%d.%m.%Y"), from = as.Date(d1,  : 
  'from' must be length 1 

为什么 ?

最佳答案

另一种选择是创建一个日期序列,排除周末并计算其长度。

library(chron)
length(myDays[!is.weekend(myDays)])

这里有一个例子:
library(chron)
myDays <- 
seq.Date(to = as.Date('01.05.2014', format="%d.%m.%Y"), 
         from=as.Date('01.01.2014', format = "%d.%m.%Y"),by=1)
length(myDays)
length(myDays[!is.weekend(myDays)])

编辑

您应该对函数进行矢量化,以便将其与矢量一起使用。
getDuration <- function(d1, d2,fmt="%d.%m.%Y") {  
  myDays <- seq.Date(to   = as.Date(d2, format=fmt), 
                     from = as.Date(d1, format =fmt), 
                     by   = 1)
  length(myDays[!is.weekend(myDays)]
}

我在这里使用 mapply :
mapply(getDuration ,issues$created_on,issues$close_date)

关于r - 两个日期之间的差异,不包括周末,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23028384/

相关文章:

r - 安装时安装包所需的 R 包

r - knitR/RMD : select output folder

r - 如何将 lp 对象写入 lp 文件?

java - 尝试使用 R 写入 xlsx.-文件时出现错误消息

r - R中如何将数字转换为因子

r - 抑制来自deSolve::lsoda的错误

r - 当字符串由数字组成时,如何通知 R 转义字符(em-dash)已完成?

r - 计算矩阵中类别/值之间的所有行和列转换,忽略顺序

r - 在 ggplot2 条形图中标记 NA

r - 如何防止截断 R 中的错​​误消息