计算两个日期之间的差异 (R)
Taking the Differences Between 2 Dates (R)
我正在尝试在 R 中计算两个日期之间的差异。通常,我可以在 MS Excel 中完成此操作,但我想通过在 R 中执行此操作来尝试学习一些新东西。日期的格式为:年-月-日,格式为“因子”:
# how the data looks like
d <- data.frame (
"day_a" = c("2010-12-25", "2020-10-31"),
"day_b" = c("2011-12-24", "2021-01-01")
)
d$day_a = as.factor(d$day_a)
d$day_b = as.factor(d$day_b)
首先,我尝试做一个简单的减法:
#my first attempt to take the difference in days
d$day_1 = as.Date(d$day_a, "%Y/%m/%d")
d$day_2 = as.Date(d$day_b, "%Y/%m/%d")
d$diff = d$day_1 - d$day_2
然后,我尝试使用“lubdridate”库:
library(lubridate)
d$diff=interval(ymd(d$day_1),ymd(d$day_2))
然而,这也不起作用。
有人可以告诉我我做错了什么吗?
谢谢
您需要为日期输入字符。此外,您使用的是 %Y/%m/%d
并且在 d
数据中定义为 Y-m-d
以便日期转换可以正常工作:
d <- data.frame (
"day_a" = c("2010-12-25", "2020-10-31"),
"day_b" = c("2011-12-24", "2021-01-01")
)
d$day_a = as.factor(d$day_a)
d$day_b = as.factor(d$day_b)
d$day_1 = as.Date(as.character(d$day_a))
d$day_2 = as.Date(as.character(d$day_b))
d$diff = d$day_1 - d$day_2
输出:
d
day_a day_b day_1 day_2 diff
1 2010-12-25 2011-12-24 2010-12-25 2011-12-24 -364 days
2 2020-10-31 2021-01-01 2020-10-31 2021-01-01 -62 days
您可以使用 date
个对象的简单减法并将结果转换为数值:
d <- data.frame (
day_a = c("2010-12-25", "2020-10-31"),
day_b = c("2011-12-24", "2021-01-01")
)
d$timediff <- as.numeric(as.Date(d$day_b) - as.Date(d$day_a))
day_a day_b timediff
1 2010-12-25 2011-12-24 364
2 2020-10-31 2021-01-01 62
请注意,新列包含以天为单位的时差。
我正在尝试在 R 中计算两个日期之间的差异。通常,我可以在 MS Excel 中完成此操作,但我想通过在 R 中执行此操作来尝试学习一些新东西。日期的格式为:年-月-日,格式为“因子”:
# how the data looks like
d <- data.frame (
"day_a" = c("2010-12-25", "2020-10-31"),
"day_b" = c("2011-12-24", "2021-01-01")
)
d$day_a = as.factor(d$day_a)
d$day_b = as.factor(d$day_b)
首先,我尝试做一个简单的减法:
#my first attempt to take the difference in days
d$day_1 = as.Date(d$day_a, "%Y/%m/%d")
d$day_2 = as.Date(d$day_b, "%Y/%m/%d")
d$diff = d$day_1 - d$day_2
然后,我尝试使用“lubdridate”库:
library(lubridate)
d$diff=interval(ymd(d$day_1),ymd(d$day_2))
然而,这也不起作用。
有人可以告诉我我做错了什么吗?
谢谢
您需要为日期输入字符。此外,您使用的是 %Y/%m/%d
并且在 d
数据中定义为 Y-m-d
以便日期转换可以正常工作:
d <- data.frame (
"day_a" = c("2010-12-25", "2020-10-31"),
"day_b" = c("2011-12-24", "2021-01-01")
)
d$day_a = as.factor(d$day_a)
d$day_b = as.factor(d$day_b)
d$day_1 = as.Date(as.character(d$day_a))
d$day_2 = as.Date(as.character(d$day_b))
d$diff = d$day_1 - d$day_2
输出:
d
day_a day_b day_1 day_2 diff
1 2010-12-25 2011-12-24 2010-12-25 2011-12-24 -364 days
2 2020-10-31 2021-01-01 2020-10-31 2021-01-01 -62 days
您可以使用 date
个对象的简单减法并将结果转换为数值:
d <- data.frame (
day_a = c("2010-12-25", "2020-10-31"),
day_b = c("2011-12-24", "2021-01-01")
)
d$timediff <- as.numeric(as.Date(d$day_b) - as.Date(d$day_a))
day_a day_b timediff
1 2010-12-25 2011-12-24 364
2 2020-10-31 2021-01-01 62
请注意,新列包含以天为单位的时差。