R两个日期之间的差异

时间:2015-08-10 07:59:54

标签: r

我有以下data.frame:

employee <- c('John Doe','Peter Gynn','Jolie Hope','Peter')
enddate <- c('2010-11-1','2008/3/25','2007-3-14','2007/9/21')
startdate<- c('','20010101','20010504','19990221')
employ.data <- data.frame(employee, enddate, startdate)

我想了解startdateenddate之间的区别。怎么办呢?

2 个答案:

答案 0 :(得分:2)

我们可以使用可以采用多种日期格式的library(lubridate)。在示例中,'enddate'和'startdate'都具有相同的顺序即。 ymd

library(lubridate)
employ.data$Diff <- with(employ.data, as.numeric(ymd(enddate)-ymd(startdate)))
employ.data
 #    employee   enddate startdate Diff
 #1   John Doe 2010-11-1             NA
 #2 Peter Gynn 2008/3/25  20010101 2640
 #3 Jolie Hope 2007-3-14  20010504 2140
 #4      Peter 2007/9/21  19990221 3134

假设还有其他格式,即01-25-201025/2010/03,我们可以使用guess_formats获取可以在parse_date_time中使用的格式将其转换为'POSIXct'类。

ymd还有其他功能。如果我们查看ymd?ymd)的帮助页面,

  

如果'truncated'参数为非零,'ymd'函数也会检查        截断格式。例如,'截断= 2'的'ymd'将        还解析不完整的日期,如'2012-06'和'2012'。

答案 1 :(得分:1)

employ.data$enddate <- as.Date(gsub('/','-',employ.data$enddate));
employ.data$startdate <- as.Date(employ.data$startdate,'%Y%m%d');
employ.data;
##     employee    enddate  startdate
## 1   John Doe 2010-11-01       <NA>
## 2 Peter Gynn 2008-03-25 2001-01-01
## 3 Jolie Hope 2007-03-14 2001-05-04
## 4      Peter 2007-09-21 1999-02-21
employ.data$enddate - employ.data$startdate;
## Time differences in days
## [1]   NA 2640 2140 3134