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

在R语言中将多列字符型数据转换为POSIXct格式的问题

问题:批量转换字符型日期列为POSIXct格式

我有多个数据框,导入后其中的多个日期时间列初始为字符型变量,希望将它们转换为POSIXct格式(其他日期时间格式也可接受)。

以下是其中一个数据框的示例:

visit<-as.data.frame(structure(list(EncounterID=structure(c(1, 2, 3, 4, 5, 6)),
                      ICU_FIRST=structure(c("03-08-2018 12:00:00", "03-17-2018 05:32:00", "02-11-2018 09:15:00", "04-01-2019 15:10:00", 
                                            "04-30-2018 06:05:00", "04-18-2018 18:45:00")),
                      ICU_LAST=structure(c("03-10-2018 10:27:00", "03-17-2018 15:45:00", "02-27-2018 09:30:00", "04-05-2019 18:49:00", 
                                           "05-29-2018 06:48:00", "04-19-2018 19:33:00")))))

尝试的代码及错误

第一次尝试结合mutate(across())与as.POSIXct:

visit<-visit%>%
  mutate(across(as.POSIXct(starts_with("ICU"), format="%m-%d-%Y %H:%M")))

收到错误:

Problem while evaluating as.POSIXct(starts_with(x), format = "%m-%d-%Y %H:%M").

第二次尝试省略格式参数:

visit<-visit%>%
  mutate(across(starts_with("ICU"), as.POSIXct))

收到提示:
character string is not in a standard unambiguous format
我理解这是因为日期字符串的格式不是R默认识别的标准格式。

最终目标是把这段转换逻辑整合到全局函数中,目前先让它在该数据框上生效。


解决方法

问题核心是across()的语法使用错误,以及未指定匹配日期字符串的格式。across()的第一个参数是列选择器,第二个参数是要应用的函数,带参数的函数需要用匿名函数语法传递。

单数据框转换代码

library(dplyr)

visit <- visit %>%
  mutate(across(starts_with("ICU"), ~ as.POSIXct(., format = "%m-%d-%Y %H:%M:%S")))

代码解释

  • starts_with("ICU")作为across()的第一个参数,正确筛选所有以ICU开头的列;
  • ~ as.POSIXct(., format = ...)是匿名函数写法,.代表当前处理的列,传递给as.POSIXct();
  • 指定format = "%m-%d-%Y %H:%M:%S"匹配你的日期字符串格式(月-日-年 时:分:秒),让R能正确解析字符型日期。

全局通用函数

如果要批量处理多个数据框,可以封装成通用函数:

convert_date_cols <- function(df, prefix = "ICU", date_format = "%m-%d-%Y %H:%M:%S") {
  df %>%
    mutate(across(starts_with(prefix), ~ as.POSIXct(., format = date_format)))
}

# 使用示例
visit <- convert_date_cols(visit)
# 处理其他数据框时可自定义前缀和格式
# other_df <- convert_date_cols(other_df, prefix = "ADMIT", date_format = "%Y/%m/%d %H:%M")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 11:27:21