簡體   English   中英

反轉日期時間向量中年份和日期之間的順序

[英]Reverse the order between year and days in a datetime vector

我有一些原始數據

po59<-structure(list(case_id = c("WC4120721", "WC4120667", "WC4120689", 
"WC4121068", "WC4120667", "WC4120666", "WC4120667", "WC4121068", 
"WC4120667", "WC4121068", "WC4121068", "WC4120666", "WC4120721", 
"WC4120666", "WC4120666"), lifecycle = c(110, 110, 110, 110, 
120, 110, 130, 120, 10, 130, 10, 120, 120, 130, 10), action = c("WC4120721-CN354877", 
"WC4120667-CN354878", "WC4120689-CN356752", "WC4121068-CN301950", 
"WC4120667-CSW310", "WC4120666-CN354878", "WC4120667-CSW308", 
"WC4121068-CSW303", "WC4120667-CSW309", "WC4121068-CSW308", "WC4121068-CSW309", 
"WC4120666-CSW310", "WC4120721-CSW310", "WC4120666-CSW308", "WC4120666-CSW309"
), activity = c("Forged Wire, Medium (Sport)", "Forged Wire, Medium (Sport)", 
"Forged Wire, Medium (Sport)", "Forged Wire, Medium (Sport)", 
"BBH-1&2", "Forged Wire, Medium (Sport)", "TCE Cleaning", "SOLO Oil", 
"Tempering", "TCE Cleaning", "Tempering", "BBH-1&2", "BBH-1&2", 
"TCE Cleaning", "Tempering"), resource = c("3419", "3216", "3409", 
"3201", "C3-100", "3216", "C3-080", "C3-030", "C3-090", "C3-080", 
"C3-090", "C3-100", "C3-100", "C3-080", "C3-090"), timestamp = c("03.12.20 6:00", 
"04.12.20 23:58", "08.12.20 16:56", "10.12.20 5:42", "10.12.20 22:57", 
"11.12.20 10:13", "11.12.20 14:17", "11.12.20 21:20", "12.12.20 2:32", 
"12.12.20 6:35", "12.12.20 14:50", "14.12.20 13:50", "14.12.20 19:11", 
"15.12.20 1:10", "15.12.20 9:25")), row.names = c(NA, -15L), class = c("tbl_df", 
"tbl", "data.frame"))

然后我轉換為bupaR object :

po59br<-bupaR::eventlog(eventlog = po59,
                       case_id = "case_id",
                       activity_id = "activity",
                       activity_instance_id = "action",
                       lifecycle_id = "lifecycle",
                       timestamp = "timestamp",
                       resource_id = "resource"
 )

我嘗試為日期時間數據提供如下格式: 2020-12-03 06:00:00而不是0003-12-20 06:00:00

po59$timestamp<-as.POSIXct(po59$timestamp,format="%Y.%m.%d 
%H:%M",tz=Sys.timezone())

之前和之后:

po59$timestamp
#  [1] "03.12.20 6:00"  "04.12.20 23:58" "08.12.20 16:56" "10.12.20 5:42"  "10.12.20 22:57" "11.12.20 10:13" "11.12.20 14:17"
#  [8] "11.12.20 21:20" "12.12.20 2:32"  "12.12.20 6:35"  "12.12.20 14:50" "14.12.20 13:50" "14.12.20 19:11" "15.12.20 1:10" 
# [15] "15.12.20 9:25" 

as.POSIXct(po59$timestamp, format="%d.%m.%y %H:%M")
#  [1] "2020-12-03 06:00:00 EST" "2020-12-04 23:58:00 EST" "2020-12-08 16:56:00 EST" "2020-12-10 05:42:00 EST"
#  [5] "2020-12-10 22:57:00 EST" "2020-12-11 10:13:00 EST" "2020-12-11 14:17:00 EST" "2020-12-11 21:20:00 EST"
#  [9] "2020-12-12 02:32:00 EST" "2020-12-12 06:35:00 EST" "2020-12-12 14:50:00 EST" "2020-12-14 13:50:00 EST"
# [13] "2020-12-14 19:11:00 EST" "2020-12-15 01:10:00 EST" "2020-12-15 09:25:00 EST"

這是您第一次讀入和處理此數據時應該執行的操作,而不是您在timestamp上進行的任何其他轉換:

po59$timestamp <- as.POSIXct(po59$timestamp, format="%d.%m.%y %H:%M")
po59
# # A tibble: 15 x 6
#    case_id   lifecycle action             activity                    resource timestamp               
#    <chr>         <dbl> <chr>              <chr>                       <chr>    <dttm>                  
#  1 WC4120721       110 WC4120721-CN354877 Forged Wire, Medium (Sport) 3419     2020-12-03 06:00:00.0000
#  2 WC4120667       110 WC4120667-CN354878 Forged Wire, Medium (Sport) 3216     2020-12-04 23:58:00.0000
#  3 WC4120689       110 WC4120689-CN356752 Forged Wire, Medium (Sport) 3409     2020-12-08 16:56:00.0000
#  4 WC4121068       110 WC4121068-CN301950 Forged Wire, Medium (Sport) 3201     2020-12-10 05:42:00.0000
#  5 WC4120667       120 WC4120667-CSW310   BBH-1&2                     C3-100   2020-12-10 22:57:00.0000
#  6 WC4120666       110 WC4120666-CN354878 Forged Wire, Medium (Sport) 3216     2020-12-11 10:13:00.0000
#  7 WC4120667       130 WC4120667-CSW308   TCE Cleaning                C3-080   2020-12-11 14:17:00.0000
#  8 WC4121068       120 WC4121068-CSW303   SOLO Oil                    C3-030   2020-12-11 21:20:00.0000
#  9 WC4120667        10 WC4120667-CSW309   Tempering                   C3-090   2020-12-12 02:32:00.0000
# 10 WC4121068       130 WC4121068-CSW308   TCE Cleaning                C3-080   2020-12-12 06:35:00.0000
# 11 WC4121068        10 WC4121068-CSW309   Tempering                   C3-090   2020-12-12 14:50:00.0000
# 12 WC4120666       120 WC4120666-CSW310   BBH-1&2                     C3-100   2020-12-14 13:50:00.0000
# 13 WC4120721       120 WC4120721-CSW310   BBH-1&2                     C3-100   2020-12-14 19:11:00.0000
# 14 WC4120666       130 WC4120666-CSW308   TCE Cleaning                C3-080   2020-12-15 01:10:00.0000
# 15 WC4120666        10 WC4120666-CSW309   Tempering                   C3-090   2020-12-15 09:25:00.0000

數據

po59 <- structure(list(case_id = c("WC4120721", "WC4120667", "WC4120689", "WC4121068", "WC4120667", "WC4120666", "WC4120667", "WC4121068", "WC4120667", "WC4121068", "WC4121068", "WC4120666", "WC4120721", "WC4120666", "WC4120666"), lifecycle = c(110, 110, 110, 110, 120, 110, 130, 120, 10, 130, 10, 120, 120, 130, 10), action = c("WC4120721-CN354877", "WC4120667-CN354878", "WC4120689-CN356752", "WC4121068-CN301950", "WC4120667-CSW310", "WC4120666-CN354878", "WC4120667-CSW308", "WC4121068-CSW303", "WC4120667-CSW309",  "WC4121068-CSW308", "WC4121068-CSW309", "WC4120666-CSW310", "WC4120721-CSW310", "WC4120666-CSW308", "WC4120666-CSW309"), activity = c("Forged Wire, Medium (Sport)", "Forged Wire, Medium (Sport)", "Forged Wire, Medium (Sport)", "Forged Wire, Medium (Sport)", "BBH-1&2", "Forged Wire, Medium (Sport)", "TCE Cleaning", "SOLO Oil", "Tempering", "TCE Cleaning", "Tempering", "BBH-1&2", "BBH-1&2", "TCE Cleaning", "Tempering"), resource = c("3419", "3216", "3409", "3201", "C3-100", "3216", "C3-080", "C3-030",  "C3-090", "C3-080", "C3-090", "C3-100", "C3-100", "C3-080", "C3-090"), timestamp = c("03.12.20 6:00", "04.12.20 23:58", "08.12.20 16:56", "10.12.20 5:42", "10.12.20 22:57", "11.12.20 10:13", "11.12.20 14:17", "11.12.20 21:20", "12.12.20 2:32", "12.12.20 6:35", "12.12.20 14:50", "14.12.20 13:50", "14.12.20 19:11", "15.12.20 1:10", "15.12.20 9:25")), row.names = c(NA, -15L), class = c("tbl_df", "tbl", "data.frame"))

您可以使用 library lubridate來修復您的日期。

從與您的問題完全一致的數據開始,通過切換年份和日期來update它們。 (也將 2K 加回年份。)

library(lubridate)

po59$timestamp <- update(po59$timestamp,
                         year = 2000 + day(po59$timestamp),
                         day = year(po59$timestamp))
head(po59)
# # A tibble: 6 × 6
#   case_id   lifecycle action             activity    resou…¹ timestamp          
#   <chr>         <dbl> <chr>              <chr>       <chr>   <dttm>             
# 1 WC4120721       110 WC4120721-CN354877 Forged Wir… 3419    2020-12-03 06:00:00
# 2 WC4120667       110 WC4120667-CN354878 Forged Wir… 3216    2020-12-04 23:58:00
# 3 WC4120689       110 WC4120689-CN356752 Forged Wir… 3409    2020-12-08 16:56:00
# 4 WC4121068       110 WC4121068-CN301950 Forged Wir… 3201    2020-12-10 05:42:00
# 5 WC4120667       120 WC4120667-CSW310   BBH-1&2     C3-100  2020-12-10 22:57:00
# 6 WC4120666       110 WC4120666-CN354878 Forged Wir… 3216    2020-12-11 10:13:00

暫無
暫無

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

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