You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在RStudio中基于单个日期列批量格式化多列时间的高效方法咨询

方案1:dplyr批量处理(代码简洁易维护)

通过across()对所有时间列批量执行拼接+转换操作,仅需修改待处理列名列表即可适配更多列的场景:

library(dplyr)

# 定义所有需要拼接日期的时间列
time_cols <- c("Are", "And They", "Have", "Different")

df_res <- df1 %>%
  mutate(across(all_of(time_cols), 
                # 拼接日期时间后转标准时间格式,%I适配12小时制、%p匹配am/pm标识
                ~as.POSIXct(paste(Headers, .x), format = "%Y-%m-%d %I:%M:%S %p")))

# 如果需要输出为和示例完全一致的字符串格式,改用如下写法
# df_res <- df1 %>%
#   mutate(across(all_of(time_cols), 
#                 ~format(as.POSIXct(paste(Headers, .x), format = "%Y-%m-%d %I:%M:%S %p"), 
#                         "%Y-%m-%d %H:%M:%S")))

方案2:纯base R实现(无需加载第三方包)

用lapply对目标列批量处理,适合不想引入依赖的场景:

time_cols <- c("Are", "And They", "Have", "Different")
df1[time_cols] <- lapply(df1[time_cols], function(x) {
  as.POSIXct(paste(df1$Headers, x), format = "%Y-%m-%d %I:%M:%S %p")
})

两种方案都无需逐列编写转换逻辑,列数越多效率优势越明显,最终输出结果和给出的预期完全一致。

内容的提问来源于stack exchange,提问作者SourceCoda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:45:03