r - 将 hh:mm:ss 格式的时间转换为秒或分钟
问题描述
我有一列时间格式为: 43 :46:18 ,它显示hh:mm:ss (h: hour, m: minutes, s: second),我想将此列转换为秒(或分钟),但是“:”是多余的,我不知道该怎么处理?
解决方案
1)定义一个函数,将时间的 3 个部分分成 3 列的数据框,将其转换为矩阵,然后将矩阵与向量相乘,向量的 3 个分量是小时、分钟和秒中的秒数。最后使用 c(...) 将其从 nx1 矩阵转换为普通向量。
dat
要进行测试,请将其应用于末尾注释中定义的测试数据的时间列。不使用任何包。
time2sec <- function(x) {
c(as.matrix(read.table(text = x, sep = ":")) %*% c(3600, 60, 1))
}
# test using dat from Note at the end
transform(dat, seconds = time2sec(time))
给予:
id time seconds
1 1 43:46:18 157578
2 2 43:46:18 157578
2)另一种方法是将小时转换为 POSIXlt,然后将其转换为秒。这给出了与上面相同的结果。同样,没有使用任何包。
time2sec_2 <- function(x) {
with(as.POSIXlt(x, format = "%Y:%M:%S"), 3600 * (year + 1900) + 60 * min + sec)
}
transform(dat, seconds = time2sec_2(time))
笔记
dat <- data.frame(id = 1:2, time = "43:46:18")
推荐阅读
- python - 从中获取代表文件的所有字节
- reactjs - 如何从装饰器函数中获取组件自己的道具
- amazon-web-services - 使用带通配符的同步命令在 aws s3 上上传文件夹/目录
- python - SQL 选择...在哪里...在;关于获取重复值(或解决方法)的任何想法
- declaration - 声明 subPropertyOf 时,我可以像限制 rdfs:range 一样限制 rdfs:domain 吗?
- c - recv() 跳过 UDP 数据包
- python - 无法安装 Numpy
- regex - 是否可以使用条件正则表达式更喜欢以后的匹配?
- delphi - 来自接口的 Delphi TypeInfo
- jquery - insertAfter 函数 - 超出最大调用堆栈大小错误