有没有办法将开始和结束时间列组合到 R 中的单个日期时间列(使用分组数据)

Is there a way to combine a start and endtime column to a single datetime column within R (with grouped data)

我有一个包含以下列的数据集:

开始时间、结束时间和 ID

有没有办法在按 ID 分组的同时将开始时间和结束时间合并为一个日期时间列?

例如,我有这个:

            StartTime                Endtime                ID

          12/18/2019 5:20:23 AM 12/18/2019 5:20:24 AM       A
          12/18/2019 2:01:40 PM 12/18/2019 2:01:47 PM       A

我想要这个:

          DateTimeUTC                                      ID

          12/18/2019 5:20:23 AM                             A
          12/18/2019 5:20:24 AM                             A
          12/18/2019 2:01:40 PM                             A
          12/18/2019 2:01:47 PM                             A

我试过这个:

library(dplyr)

data %>%  group_by(ID) %>%  coalesce(Starttime, Endtime)

此命令产生错误。我会进一步研究这个。任何帮助表示赞赏。 谢谢。

我们可以使用 tidyr 中的 pivot_longer 将数据重塑为 'long' 格式。 coalesce 当有多个列有缺失值 (NA) 并且想要合并到单个列时使用 returns 每行中的第一个非 NA 列值(如果有没有非 NA,它 returns NA)

 library(dplyr)
 library(tidyr)
 data %>%
     pivot_longer(cols = -ID, values_to = "DateTimeUTC") %>%
     select(DateTimeUTC, ID)
# A tibble: 4 x 2
#  DateTimeUTC           ID   
#  <chr>                 <chr>
#1 12/18/2019 5:20:23 AM A    
#2 12/18/2019 5:20:24 AM A    
#3 12/18/2019 2:01:40 PM A    
#4 12/18/2019 2:01:47 PM A   

数据

data <- structure(list(StartTime = c("12/18/2019 5:20:23 AM", "12/18/2019 2:01:40 PM"
), Endtime = c("12/18/2019 5:20:24 AM", "12/18/2019 2:01:47 PM"
), ID = c("A", "A")), class = "data.frame", row.names = c(NA, 
-2L))