如何解决R 减去时间
data=data.frame(start = c("5:21","14:22","99:99"),stop=c("6:01","15:00","1:14"),WANT=c(40,38,NA)
格式为“小时”:“分钟”,我希望从“开始”中减去“停止”以创建一个名为“分钟”的新变量列,该列等于“WANT”中所示的分钟数
解决方法
使用 data.table
,我们将列转换为 ITime
,Reduce
,通过与 difftime
取差并转换为 numeric
library(data.table)
setDT(data)[,WANT2 := -as.numeric(Reduce(difftime,lapply(.SD,as.ITime))),.SDcols = start:stop]
-输出
data
# start stop WANT WANT2
#1: 5:21 6:01 40 40
#2: 14:22 15:00 38 38
#3: 99:99 1:14 NA NA
,
这是使用 tidyverse 的一种解决方案
library(tidyverse)
library(lubridate)
data=data.frame(start = c("5:21","14:22","99:99"),stop=c("6:01","15:00","1:14"),WANT=c(40,38,NA)
)
data %>%
mutate(across(.cols = c(start,stop),.fns = ms),difference = seconds(start - stop),difference = if_else(difference < 0,difference * -1,NA_real_))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。