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

R语言将字符型Duration列转为hms时长类型时如何保留原数据框全部列

问题原因

执行X2020_07 <- as.duration(hms(X2020_07$Duration))时,赋值符号右侧生成的是仅包含转换后时长值的单列向量,直接将整个X2020_07数据框对象覆盖替换,才会导致其余18列全部丢失。

可行解决方案

只需要针对数据框内的Duration列单独赋值修改,不要直接覆盖整个数据框对象即可,以下是两种常用实现方式:

基础R原生写法

无需加载除lubridate外的额外依赖,直接索引目标列赋值,所有未修改的列会完整保留:

library(lubridate)
# 仅修改Duration列,其余列不受影响
X2020_07$Duration <- as.duration(hms(X2020_07$Duration))

dplyr管道流写法

如果日常使用tidyverse生态的函数做数据处理,可以用mutate()函数定向修改指定列,代码可读性更强:

library(lubridate)
library(dplyr)

X2020_07 <- X2020_07 %>%
  mutate(Duration = as.duration(hms(Duration)))
注意事项
  • 转换前建议先核查Duration列的字符格式,确认所有值符合时:分:秒的hms解析规则,避免解析失败生成多余NA值
  • 转换完成后可执行str(X2020_07)查看数据框整体结构,确认19列完整保留、Duration列类型符合预期
  • 如果你不需要转成duration类型(duration以秒为单位存储数值型时长,hms类型自带时分秒格式化显示效果),可以直接去掉外层的as.duration(),代码调整为:
# 保留hms类型的写法
X2020_07$Duration <- hms(X2020_07$Duration)

内容的提问来源于stack exchange,提问作者mikeah21

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:51:18