簡體   English   中英

取兩個日期之間的差異 (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數據中定義為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM