【发布时间】:2021-06-16 17:13:30
【问题描述】:
我有一个数据框,其中有一列代表时间。但是,字符串的长度不一致,当我尝试转换它们时,我得到了 NA:
有没有办法填充 5 个字符的时间,使列中的所有值总共是 7 个字符?
times <- c("56:09", "1:05:19", "1:06:24", "1:07:22", "51:50", "57:51", "41:45", "58:25", "46:45", "58:52")
【问题讨论】:
我有一个数据框,其中有一列代表时间。但是,字符串的长度不一致,当我尝试转换它们时,我得到了 NA:
有没有办法填充 5 个字符的时间,使列中的所有值总共是 7 个字符?
times <- c("56:09", "1:05:19", "1:06:24", "1:07:22", "51:50", "57:51", "41:45", "58:25", "46:45", "58:52")
【问题讨论】:
使用ifelse 中的nchar 创建条件,并使用data.table 中的as.ITime 转换为时间
library(data.table)
as.ITime(ifelse(nchar(times) < 7, paste0("0:", times), times))
#[1] "00:56:09" "01:05:19" "01:06:24" "01:07:22" "00:51:50" "00:57:51" "00:41:45" "00:58:25" "00:46:45" "00:58:52"
【讨论】:
我发现这也有效:
times[which(nchar(times)==5)] <- paste0("00:", times[which(nchar(times)==5)])
【讨论】: