R “如何分离”:&引用;在时间数据中

R “如何分离”:&引用;在时间数据中,r,R,我在数据库中有一个时间列,其中小时和分钟之间用“:”分隔。我想删除“:”以便时间字段变成数字,因为我将使用数字时间进行一些计算 输入: X 00:00 01:15 02:30 输出: X 0000 0115 0230 我是R的新手。如果这是一个愚蠢的问题,我深表歉意。非常感谢您的帮助。多谢各位 GSee的回答符合您的要求。然而,如果你用时间单位做算术,你可能会想到一些更简单的方法 > x <- c("00:00", "01:15", "02:30") > gsub(":", "

我在数据库中有一个时间列,其中小时和分钟之间用“:”分隔。我想删除“:”以便时间字段变成数字,因为我将使用数字时间进行一些计算

输入: X 00:00 01:15 02:30

输出: X 0000 0115 0230


我是R的新手。如果这是一个愚蠢的问题,我深表歉意。非常感谢您的帮助。多谢各位

GSee的回答符合您的要求。然而,如果你用时间单位做算术,你可能会想到一些更简单的方法

> x <- c("00:00", "01:15", "02:30")
> gsub(":", "", x)
[1] "0000" "0115" "0230"
library(lubridate)
X <- hm(c("00:00", "01:15", "02:30")) # Converts to lubridate time objects

X + minutes(1)
# [1] "1M 0S"     "1H 16M 0S" "2H 31M 0S"

X + weeks(2)
# [1] "14d 0H 0M 0S"  "14d 1H 15M 0S" "14d 2H 30M 0S"
库(lubridate)

X使用R工具进行时间解析将第一时间转换为日期时间可能更明智。目前,您将无法捕获“时间”值的非十进制字符。300-259应该是1,而不是41。这组命令演示了R的一些日期时间和日期函数:

> X <- c('00:00', '01:15', '02:30')
> as.POSIXct(X, format="%H:%M")
[1] "2013-08-05 00:00:00 PDT" "2013-08-05 01:15:00 PDT" "2013-08-05 02:30:00 PDT"
现在尝试使用今天的日期,但请注意,偏移量为7小时,因为as.POSIXct将假定这是GMT.UCT时间:

> as.numeric(as.POSIXct(X, format="%H:%M") - as.POSIXct(Sys.Date()))
[1] 7.00 8.25 9.50
> as.numeric(as.POSIXct(X, format="%H:%M") - (as.POSIXct(Sys.Date())+7*3600))
[1]    0 4500 9000
因此,通过移动7小时(=7*3600秒),然后转换为分钟来结束该过程:

> as.numeric(as.POSIXct(X, format="%H:%M") - (as.POSIXct(Sys.Date())+7*3600))/60
[1]   0  75 150

太好了,非常感谢!我不知道gsub。再次感谢。在这种情况下,
sub
也可以工作
sub
替换每个字符串中的第一个匹配项<代码>gsub
替换所有发生的事件。观察
sub(“:”,“10:10:10”)
gsub(“:”,“10:10:10”)
> as.numeric(as.POSIXct(X, format="%H:%M") - as.POSIXct(Sys.Date()))
[1] 7.00 8.25 9.50
> as.numeric(as.POSIXct(X, format="%H:%M") - (as.POSIXct(Sys.Date())+7*3600))
[1]    0 4500 9000
> as.numeric(as.POSIXct(X, format="%H:%M") - (as.POSIXct(Sys.Date())+7*3600))/60
[1]   0  75 150