![](/img/trans.png)
[英]R - How to calculate value differences between dates with heterogeneous number of rows
[英]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
數據中定義為Ymd
以便日期轉換可以正常工作:
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
Output:
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
請注意,新列包含以天為單位的時差。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.