簡體   English   中英

計算 R 中混合日期格式的天數差異

[英]Calculate the days differences with mixed date format in R

我需要計算兩個混合結構日期之間的天數差異。 這是一個示例數據集:

testdata <- data.frame(id = c(1,2,3),
                   date1 = c("2022/11/13 9:19:03 AM PST", "2022-11-01","2022-10-28"),
                   date2 = c("2022/12/12 1:52:29 PM PST","2022-10-21","2022/12/01 8:15:25 AM PST"))

> testdata
  id                     date1                     date2
1  1 2022/11/13 9:19:03 AM PST 2022/12/12 1:52:29 PM PST
2  2                2022-11-01                2022-10-21
3  3                2022-10-28 2022/12/01 8:15:25 AM PST

首先,我需要獲取日期、排除小時數並計算天數差異。 所以預期的數據集是:

> df
      id                     date1                     date2.   days.diff
    1  1                2022/11/13                2022/12/12     19
    2  2                2022-11-01                2022-10-21     11
    3  3                2022-10-28                2022/12/01     34

您可以使用anytime rowwiseanytime來按行計算日期差異,如下所示:

library(dplyr)
library(anytime)
testdata %>%
  rowwise() %>%
  mutate(days.diff = anytime(date1) - anytime(date2))
#> # A tibble: 3 × 4
#> # Rowwise: 
#>      id date1                     date2                     days.diff     
#>   <dbl> <chr>                     <chr>                     <drtn>        
#> 1     1 2022/11/13 9:19:03 AM PST 2022/12/12 1:52:29 PM PST -29.00000 days
#> 2     2 2022-11-01                2022-10-21                 11.04167 days
#> 3     3 2022-10-28                2022/12/01 8:15:25 AM PST -34.04167 days

創建於 2023-01-20,使用reprex v2.0.2

as.DatetryFormats一起使用

library(dplyr)

testdata %>% 
  rowwise() %>% 
  mutate(across(starts_with("date"), ~ as.Date(.x, 
      tryFormats=c("%Y/%m/%d %H:%M:%S", "%Y-%m-%d"))), 
    days.diff = date2 - date1) %>% 
  ungroup()
# A tibble: 3 × 4
     id date1      date2      days.diff
  <dbl> <date>     <date>     <drtn>   
1     1 2022-11-13 2022-12-12  29 days 
2     2 2022-11-01 2022-10-21 -11 days 
3     3 2022-10-28 2022-12-01  34 days 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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