从 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))

最新更新