时间转换为数字
Time conversion to number
有一个带有时间值的向量。如何删除冒号并将文本值转换为数值。即从“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"
试试
x <- as.numeric(x)
然后确定
class(x)
我们可以用gsub
把:
换成""
。之后,使用as.numeric
进行转换。
x <- as.numeric(gsub(":", "", x, fixed = TRUE))
或者我们可以使用 Soto
建议的正则表达式
x <- as.numeric(gsub('\D+', '', x))
如果您想在一行中完成所有操作,可以使用 taRifx
中的 destring()
函数删除所有非数字的内容并将结果转换为数字。
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)))
}
有一个带有时间值的向量。如何删除冒号并将文本值转换为数值。即从“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"
试试
x <- as.numeric(x)
然后确定
class(x)
我们可以用gsub
把:
换成""
。之后,使用as.numeric
进行转换。
x <- as.numeric(gsub(":", "", x, fixed = TRUE))
或者我们可以使用 Soto
建议的正则表达式x <- as.numeric(gsub('\D+', '', x))
如果您想在一行中完成所有操作,可以使用 taRifx
中的 destring()
函数删除所有非数字的内容并将结果转换为数字。
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)))
}