如何将很多“日期”更改为“期间”

时间:2016-09-22 01:51:03

标签: r date

我有一些类似的日期数据:

> Date      
> 2015-01-01   
> 2015-01-02  
> 2015-01-03   
> 2015-01-04    
> 2015-01-06   
> 2015-01-07   
> ....  

但是日期太多了。我想更改数据显示如下:

> Start.Date    End.Date    
> 2015-01-01   2015-01-04    
> 2015-01-06   2015-01-07

怎么做? 如果我只想考虑工作日,该怎么做?

谢谢。

1 个答案:

答案 0 :(得分:1)

Date <- c(
"2015-01-01",
"2015-01-02",
"2015-01-03",
"2015-01-04",
"2015-01-06",
"2015-01-07"
)

library(lubridate)
Date <- as.data.frame(ymd(Date))

Date$weekdays <- weekdays(Date$`ymd(Date)`)

# Keep only working days
Date <- Date[!Date$weekdays %in% c("Saturday", "Sunday"),]

# Assuming that "Start" and "End" are defined by week
Date$isoweek <- isoweek(Date$`ymd(Date)`)

Start_Date <- NA
End_Date   <- NA    
n          <- unique(Date$isoweek)

for(i in 1:length(n)){
    Start_Date[i] <- as.character(min(Date$`ymd(Date)`[Date$isoweek == n[i]]))
    End_Date[i]   <- as.character(max(Date$`ymd(Date)`[Date$isoweek == n[i]]))
  }


final <- data.frame(Start_Date = Start_Date, End_Date = End_Date)
final