R语言:忽略缺失值将字符型时间列转换为时间对象
解决方法
你的数据里的"NA"是字符串类型,不是R原生的缺失值标记,得先把这些字符串转成真正的NA,再转换时间格式,转换时会自动忽略缺失值。
方法一:用lubridate包(推荐,操作简洁)
# 先安装并加载lubridate包(第一次用需要安装) install.packages("lubridate") library(lubridate) # 你的原始数据 t <- data.frame(time=c("NA", "NA", "11:10", "09:30", "NA", "10:50", "12:55", "08:05", "08:15", "NA", "NA")) # 1. 将字符串"NA"替换为R原生缺失值NA t$time[t$time == "NA"] <- NA # 2. 转换为时间变量 t$time <- hm(t$time) # 查看处理后的结果 print(t)
转换后time列会变成Period类型,保留小时和分钟信息,缺失值仍为NA。
方法二:用基础R的strptime函数
如果不想额外安装包,用基础R也能实现:
# 原始数据 t <- data.frame(time=c("NA", "NA", "11:10", "09:30", "NA", "10:50", "12:55", "08:05", "08:15", "NA", "NA")) # 替换字符串"NA"为原生NA t$time[t$time == "NA"] <- NA # 转换为时间格式(返回POSIXlt类型) t$time <- strptime(t$time, format = "%H:%M") # 查看结果 print(t)
内容的提问来源于stack exchange,提问作者Loz
相关产品推荐
相关产品推荐

