dt$st<- substr(strptime(dt$LoginTime, format = "%H:%S"),12,20)
使用上面的代码,我已经提取了字符格式的时间,我希望对它进行算术运算。例如,如果我想将一列数字与上面的列相乘,我该怎么做?
LoginTime列的结构是:
structure(c(1505L, 231L, 1606L, 757L, 139L, 702L), .Label = c("0:00:01",
"0:00:05", "0:00:06", "0:00:07", "0:00:10", "0:00:12", "0:00:13", 9:56:01",
"9:56:31", "9:57:11", "9:57:39", "9:58:37"), class = "factor")
答案 0 :(得分:1)
看起来你有时间而不是时间。你可以使用package lubridate:
x <- factor(c("0:00:13", "9:56:01"))
library(lubridate)
y <- hms(x)
#[1] "13S" "9H 56M 1S"
但是,请阅读help("period")
:
在Period对象中,时间单位没有固定长度(除了 几秒钟),直到它们被添加到日期时间。每个的长度 时间单位将取决于添加日期时间。对于 例如,从2009-01-01开始的一年将是365天。一个 从2012-01-01开始的一年将是366天。当数学是 使用句点对象执行,每个单元单独应用。怎么样 一个时期的长度在其单位之间分配是非平凡的。 例如,当闰秒发生时,1分钟长于60 秒。
y*3
#[1] "39S" "27H 168M 3S"
答案 1 :(得分:1)
看起来您可以通过对代码的小调整来进行一些计算。 例如
计算平均值
substr(mean(strptime(dt$LoginTime, format = "%H:%S")), 12, 20)
每行添加10秒
substr(strptime(dt$LoginTime, format = "%H:%S") + 10, 12, 20)
为每一行添加一分钟
substr(strptime(dt$LoginTime, format = "%H:%S") + 60, 12, 20)
添加一小时
substr(strptime(dt$LoginTime, format = "%H:%S") + 3600, 12, 20)
添加两个小时
substr(strptime(dt$LoginTime, format = "%H:%S") + 7200, 12, 20)