计算r中两个日期之间的天数
我需要以两种方式计算多个日期之间经过的天数,然后将这些结果输出到新列:I)与第一个日期相比经过的天数(例如,results$first)和ii)连续日期之间经过的天数(例如,results$between)。下面是一个具有预期结果的示例。提前谢谢计算r中两个日期之间的天数,r,R,我需要以两种方式计算多个日期之间经过的天数,然后将这些结果输出到新列:I)与第一个日期相比经过的天数(例如,results$first)和ii)连续日期之间经过的天数(例如,results$between)。下面是一个具有预期结果的示例。提前谢谢 library(lubridate) DATA = data.frame(DATE = mdy(c("7/8/2013", "8/1/2013", "8/30/2013", "10/23/2013",
library(lubridate)
DATA = data.frame(DATE = mdy(c("7/8/2013", "8/1/2013", "8/30/2013", "10/23/2013",
"12/16/2013", "12/16/2015")))
RESULTS = data.frame(DATE = mdy(c("7/8/2013", "8/1/2013", "8/30/2013", "10/23/2013",
"12/16/2013", "12/16/2015")),
FIRST = c(0, 24, 53, 107, 161, 891), BETWEEN = c(0, 24, 29, 54, 54, 730))
第一部分:
DATA = data.frame((c("7/8/2013", "8/1/2013", "8/30/2013", "10/23/2013","12/16/2013", "12/16/2015")))
names(DATA)[1] = "V1"
date = as.Date(DATA$V1, format="%m/%d/%Y")
print(date-date[1])
结果:
[1] 0 24 53 107 161 891
对于第二部分-只需使用
For
循环这将得到您想要的:
d您可以使用简单的difftime
和滞后的diff
计算来添加每一列
DATA$FIRST <- c(0,
with(DATA,
difftime(DATE[2:length(DATE)],DATE[1], unit="days")
)
)
DATA$BETWEEN <- c(0,
with(DATA,
diff(DATE[1:(length(DATE) - 1)], unit="days")
)
)
identical(DATA, RESULTS)
[1] TRUE
DATA$首先感谢大家!我应该在问题中提到这一点,但我正在尝试编写灵活的代码(例如,数据集之间的日期数可能会改变)和避免for循环。因此,尽管所有答案都有效,但度量答案似乎是最灵活的。再次感谢,保重!
#Using dplyr package
library(dplyr)
df1 %>% # your dataframe
mutate(BETWEEN0=as.numeric(difftime(DATE,lag(DATE,1))),BETWEEN=ifelse(is.na(BETWEEN0),0,BETWEEN0),FIRST=cumsum(as.numeric(BETWEEN)))%>%
select(-BETWEEN0)
DATE BETWEEN FIRST
1 2013-07-08 0 0
2 2013-08-01 24 24
3 2013-08-30 29 53
4 2013-10-23 54 107
5 2013-12-16 54 161
6 2015-12-16 730 891