RStudio中如何将两个datetime字段快速拆分为独立日期和时间列
R批量拆分多列日期时间列的实现方案
所需依赖包:
library(tidyverse) library(hms)
方案1:一次性拆分所有datetime列为独立日期、时间列
直接用across批量处理多列日期时间,无需逐列拆分,输出的新列为标准日期/时间格式,可直接用于后续计算,自动保留所有原始列:
my_data %>% # 先把字符格式的datetime转成标准POSIXct格式 mutate(across(c(start, end), ymd_hms)) %>% # 批量生成日期列 mutate(across(c(start, end), date, .names = "{.col}_date")) %>% # 批量生成时间列 mutate(across(c(start, end), ~as_hms(.), .names = "{.col}_time"))
如果不需要保留原始的start、enddatetime列,可在末尾加%>% select(-c(start, end))。
该方案比separate更稳定:不依赖字符串分隔符,即使datetime格式为2021-09-18T16:45:32这类带T分隔的格式也能正常解析。
方案2:仅提取日期计算时间间隔(无需拆分时间部分)
如果仅需要计算时间间隔、日期差,不需要单独的时间列,可直接转换后计算:
my_data %>% mutate( start = ymd_hms(start), end = ymd_hms(end), # 总行程时长(默认单位为秒,可直接转分钟/小时) trip_duration = end - start, # 跨天日期差 date_diff = date(end) - date(start) )
内容的提问来源于stack exchange,提问作者Analytical Melody
相关产品推荐
相关产品推荐

