r - 如何在时间列中添加秒
问题描述
我在 R 中有一个“时间”列,在 HH:MM:SS 中有一组字符时间值但是,有些时间没有秒数,这使得从 char 到 chron() 的转换不可能
例子:
图书馆(时间)
x <- c("08:25:18","08:25","08:24:57","08:24:47")
我想将 x 转换为 chron(),但没有秒数,它将该值转换为 N/A
如何将 :00 秒添加到需要它的人?谢谢
解决方案
我们可以转换为日期时间,format
然后应用times
library(chron)
library(lubridate)
out1 <- times(format(parse_date_time(x, c('HMS', 'HM')), "%H:%M:%S"))
str(out1)
#'times' num [1:4] 08:25:18 08:25:00 08:24:57 08:24:47
# - attr(*, "format")= chr "h:m:s"
或指定times
在chron
chron(times = format(parse_date_time(x, c('HMS', 'HM')), "%H:%M:%S"))
或使用as.ITime
from data.table
which 会起作用
library(data.table)
as.ITime(x)
#[1] "08:25:18" "08:25:00" "08:24:57" "08:24:47"
推荐阅读
- airflow - 可以在 Airflow UI 中更改 Airflow DAG 计划吗?
- ios - App Store Connect 混合截图和预览
- shell - Shell 变量值替换
- php - 使用 PHP 忽略 CSV 中的列
- git - git pull 后重命名服务器上的文件夹
- c# - Hangfire 后台作业抛出“内存不足,无法继续执行程序。”
- reactjs - React Hooks 常见问题解答:getderivedstatefromprops 的实现导致渲染状态不连贯
- c# - 是否可以传递或替换控件名称的一部分?
- swift - 定义多个类型别名
- google-cloud-dataflow - 通过 Google Cloud Pub/Sub 将数据重播到 Apache Beam 管道中,而不会使其他订阅者超载