R 时间转换为数字
有一个带有时间值的向量。如何删除冒号并将文本值转换为数值。i、 e.从“10:01:02”-字符到100102-数字。我所能找到的都在下面R 时间转换为数字,r,regex,string,time,numeric,R,Regex,String,Time,Numeric,有一个带有时间值的向量。如何删除冒号并将文本值转换为数值。i、 e.从“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 strsplit(x,split=“:”) [[1]] [1] "10" "01" "02" [[2]] [
> x <- c("10:01:02", "11:01:02")
> strsplit(x, split = ":")
[[1]]
[1] "10" "01" "02"
[[2]]
[1] "11" "01" "02"
>x strsplit(x,split=“:”)
[[1]]
[1] "10" "01" "02"
[[2]]
[1] "11" "01" "02"
尝试使用
x <- as.numeric(x)
我们可以使用
gsub
将:
替换为“
”。然后,使用as.numeric
进行转换
x <- as.numeric(gsub(":", "", x, fixed = TRUE))
x如果要在一行中完成所有操作,可以使用taRifx
中的destring()
函数删除所有不是数字的内容,并将结果转换为数字
taRifx::destring(x)
如果某些数据以不同的方式格式化,例如“10-01-02”
,这也会起作用,不过您可能需要设置保留的值
destring("10-10-10", keep = "0-9")
如果您不想安装taRifx
软件包,可以在本地定义destring()
函数
destring <- function(x, keep = "0-9.-")
{
return(as.numeric(gsub(paste("[^", keep, "]+", sep = ""),
"", x)))
}
销毁此命令将导致NA
>x或as.numeric(gsub('\\D+',''',x))
如果您愿意,请将其包含在您的答案中like@Andrew谢谢你的回答。但对我来说,理解和理解的简单性很重要。你的答案对我来说很难。你有没有考虑过用虚拟日期将时间转换成POSIXct。?POSIXct本质上是一个数字,但在处理后续操作(如时差或绘图)时效果更好。
destring("10-10-10", keep = "0-9")
destring <- function(x, keep = "0-9.-")
{
return(as.numeric(gsub(paste("[^", keep, "]+", sep = ""),
"", x)))
}