时间转换为数字

时间:2017-08-01 13:54:30

标签: r regex string time numeric

有一个带有时间值的向量。如何删除冒号并将文本值转换为数值。即从“10:01:02” - 字符到100102 - 数字。我能找到的所有内容如下所示。

> x <- c("10:01:02", "11:01:02")  
> strsplit(x, split = ":")
[[1]]
[1] "10" "01" "02"

[[2]]
[1] "11" "01" "02"

3 个答案:

答案 0 :(得分:5)

如果您想在一行中执行所有操作,可以使用destring()中的taRifx函数删除所有非数字的内容,并将结果转换为数字。

taRifx::destring(x)

如果您的某些数据以不同的方式格式化,例如"10-01-02",这也会有效,但您可能需要设置keep的值。

destring("10-10-10", keep = "0-9")

如果您不想安装taRifx软件包,可以在本地定义destring()函数。

destring <- function(x, keep = "0-9.-") 
{
    return(as.numeric(gsub(paste("[^", keep, "]+", sep = ""), 
        "", x)))
}

答案 1 :(得分:3)

我们可以使用gsub:替换为""。之后,使用as.numeric进行转换。

x <- as.numeric(gsub(":", "", x, fixed = TRUE))

或者我们可以使用Soto建议的正则表达式

x <- as.numeric(gsub('\\D+', '', x))

答案 2 :(得分:0)

尝试

x <- as.numeric(x)

然后确保

class(x)