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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 07:13:11