簡體   English   中英

從 R 中的單個日期時間列創建開始和結束時間列

[英]Create start and end time column from a single datetime column in R

我想從 R 中的當前日期時間列創建一個開始時間和結束時間列。我的數據已按 ID 分組。

這是數據:

                    ID                    DATETIMEUTC


                    A                     12/17/2019 9:46:04 PM
                    A                     12/17/2019 9:46:05 PM                                                
                    A                     12/18/2019 2:34:56 AM
                    A                     12/18/2019 2:34:58 AM 

我想要這樣的結果:

           ID                   StartTime                       EndTime

           A                    12/17/2019 9:46:04 PM           12/17/2019 9:46:05 PM
           A                    12/18/2019 2:34:56 AM           12/18/2019 2:34:58 AM

這是我正在編寫的代碼以嘗試實現這一目標:

            library(dplyr)

            df %>%
            group_by(id) %>%
            mutate(start=date, stop=lead(start, default=end[1]))

此命令未產生預期結果。 我還在研究這個。 非常感謝任何建議!

塔妮莎·哈德森

我們可以使用c('StartTime', 'EndTime')替代值創建一個新列,按ID分組,為每個組創建一個唯一的行號並以寬格式傳播數據。

library(dplyr)
df %>%
  group_by(ID, col = rep(c('StartTime', 'EndTime'), length.out = n())) %>%
  mutate(id = row_number()) %>%
  tidyr::pivot_wider(names_from = col, values_from = DATETIMEUTC) %>%
  ungroup() %>%
  select(-id)

# A tibble: 2 x 3
#  ID    StartTime             EndTime              
#  <fct> <fct>                 <fct>                
#1 A     12/17/2019 9:46:04 PM 12/17/2019 9:46:05 PM
#2 A     12/18/2019 2:34:56 AM 12/18/2019 2:34:58 AM

數據

df <- structure(list(ID = structure(c(1L, 1L, 1L, 1L), .Label = "A", 
class = "factor"), DATETIMEUTC = structure(1:4, .Label = c("12/17/2019 9:46:04 PM", 
"12/17/2019 9:46:05 PM", "12/18/2019 2:34:56 AM", "12/18/2019 2:34:58 AM"
), class = "factor")), class = "data.frame", row.names = c(NA, -4L))

暫無
暫無

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

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