我有多个带有多个日期/时间列的数据框,当我导入它们时,它们最初是字符变量,我想将它们转换为 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(starts_with()))
选项与 as.POSIXct 结合使用:
visit<-visit%>%
mutate(across(as.POSIXct(starts_with("ICU"), format="%m-%d-%Y %H:%M")))
但我不断收到错误:
评估 as.POSIXct(starts_with(x), format = "%m-%d-%Y %H:%M") 时出现问题。
我也尝试过这个:
visit<-visit%>%
mutate(across(starts_with("ICU"), as.POSIXct))
但我收到消息字符串不是标准的明确格式,据我了解,这是两个 ICU 列不是数字的结果。
理想情况下,我希望将此代码插入到全局函数中,但我试图让它首先适用于此数据框。
一些部件丢失或损坏。我添加了
%S
并更正了函数的顺序。
library(dplyr, warn.conflicts = FALSE)
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")))))
visit <-
visit |>
mutate(across(starts_with("ICU"),
\(x) as.POSIXct(x, format="%m-%d-%Y %H:%M:%S")))
visit
#> EncounterID ICU_FIRST ICU_LAST
#> 1 1 2018-03-08 12:00:00 2018-03-10 10:27:00
#> 2 2 2018-03-17 05:32:00 2018-03-17 15:45:00
#> 3 3 2018-02-11 09:15:00 2018-02-27 09:30:00
#> 4 4 2019-04-01 15:10:00 2019-04-05 18:49:00
#> 5 5 2018-04-30 06:05:00 2018-05-29 06:48:00
#> 6 6 2018-04-18 18:45:00 2018-04-19 19:33:00
创建于 2024-01-22,使用 reprex v2.0.2