R语言:将Factor转换为日期时间时anytime函数返回NA求助
嘿,我来帮你搞定这个日期转换返回NA的问题~
修复Factor转日期时间返回NA的方案
你的问题核心在于直接把factor类型传给anytime()时,自动解析逻辑没有正确识别格式(factor底层存的是整数索引,不是直观的字符文本),这里有几个可靠的解决方法:
方法1:先转字符型再用anytime
先把factor转换成character,让anytime()能正确读取日期文本:
library(anytime) date1 <- as.factor("22:20:00 18-Apr-2018") # 先转换为字符类型 date1 <- anytime(as.character(date1)) class(date1) # 输出:[1] "POSIXct" "POSIXt" date1 # 输出示例:[1] "2018-04-18 22:20:00 UTC"(时区依系统而定)
方法2:明确指定格式(更稳定)
如果自动识别还是不靠谱,我们可以用strptime()或as.POSIXct()直接指定日期格式,完全避免识别误差:
date1 <- as.factor("22:20:00 18-Apr-2018") # 格式说明:%H=24小时制时,%M=分,%S=秒;%d=日,%b=月份缩写,%Y=4位年 date1 <- as.POSIXct(as.character(date1), format = "%H:%M:%S %d-%b-%Y") # 或者用strptime # date1 <- strptime(as.character(date1), format = "%H:%M:%S %d-%b-%Y") class(date1) date1
补充说明
为什么原代码会返回NA?因为anytime()处理factor时,会先读取它的底层整数值而非对应的字符内容,自然无法解析成日期,所以转成character是必要的前置步骤哦。
内容的提问来源于stack exchange,提问作者adam.888
相关产品推荐
相关产品推荐

