有没有办法将开始和结束时间列组合到 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))
我有一个包含以下列的数据集:
开始时间、结束时间和 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))