R语言mutate+across批量转时间列报错,单列处理正常求解决
问题解决建议
错误原因
你在批量处理时调用as.POSIXct(.)未指定format参数,而单列处理时明确传入了format="%d.%m.%Y %H:%M:%S"——这是解析失败的核心原因。as.POSIXct默认依赖系统本地格式解析字符串,当你的日期格式与默认格式不匹配时,就会触发as.POSIXlt.character错误。此外,你原代码中多余的format()调用会将POSIXct类型转回字符串,与你“转换为日期时间类型”的需求矛盾。
修正后的代码
情况1:直接替换原列
若需将原有“ Time”结尾列直接转为POSIXct类型:
M601_M_multi.2 <- M601_M_multi %>% mutate(across(ends_with(' Time'), ~as.POSIXct(., format = "%d.%m.%Y %H:%M:%S")))
情况2:保留原列,生成带.used后缀的新列
若要保留原列,同时生成转换后的新列(与你最初的批量处理需求一致):
M601_M_multi.2 <- M601_M_multi %>% mutate( across(ends_with(' Time'), ~as.POSIXct(., format = "%d.%m.%Y %H:%M:%S")), .names = "{.col}.used" )
补充:如果你的实际需求是生成格式化后的日期字符串而非POSIXct类型,才需要保留
format(),此时代码应为:M601_M_multi.2 <- M601_M_multi %>% mutate( across(ends_with(' Time'), ~format(as.POSIXct(., format = "%d.%m.%Y %H:%M:%S"), "%d.%m.%Y %H:%M:%S")), .names = "{.col}.used" )
内容的提问来源于stack exchange,提问作者GrBa
相关产品推荐
相关产品推荐

