Datetime R:计算两个数字时间之间经过的时间,例如944和1733是469分钟

Datetime R:计算两个数字时间之间经过的时间,例如944和1733是469分钟,datetime,r,time,Datetime,R,Time,我试图在R中编写一个优雅的函数来计算两个时间戳之间经过的时间,这两个时间戳存储为hmm或hhmm格式的整数。我想以分钟的整数形式返回经过的时间 到目前为止,我的解决方案可能会有很大的改进: #Treatment of varous length inputs: #1 digit = m #2 digits = mm #3 digits = hmm #4 digits = hhmm #5+ digits = failure elapsedtime <- function(S,E) {

我试图在R中编写一个优雅的函数来计算两个时间戳之间经过的时间,这两个时间戳存储为hmm或hhmm格式的整数。我想以分钟的整数形式返回经过的时间

到目前为止,我的解决方案可能会有很大的改进:

#Treatment of varous length inputs:
#1 digit  = m
#2 digits = mm
#3 digits = hmm
#4 digits = hhmm
#5+ digits = failure

elapsedtime <- function(S,E) {
    S<-c(as.character(S))
    E<-c(as.character(E))

    if (length(S)!=length(E)) {
        stop("Invalid input")
    }

    for (i in seq(1:length(S))) {
        if (nchar(S[i])>4) {S[i]<-NA}
        if (nchar(E[i])>4) {E[i]<-NA}

        while (nchar(S[i])<4) {
            S[i]<-paste('0',S[i],sep='')
        }

        while (nchar(E[i])<4) {
            E[i]<-paste('0',E[i],sep='')
        }
        S[i]<-as.character(as.numeric(substr(S[i],1,2))*60+as.numeric(substr(S[i],3,4)))
        E[i]<-as.character(as.numeric(substr(E[i],1,2))*60+as.numeric(substr(E[i],3,4)))

    }
    S<-as.numeric(S)
    E<-as.numeric(E)

    return(E-S)
}
elapsedtime(944,1733) 
elapsedtime(44,33)
elapsedtime(44,133)
elapsedtime(c(944,44),c(1733,33))
elapsedtime(c(44,44),c(33,133))
elapsedtime(944,17335)
elapsedtime(c(944,945),c(1733,17335))
elapsedtime(c(944,945),c(1733,17335,34))
不同长度输入的处理: #1位=m #2位=毫米 #3位数=hmm #4位数字=hhmm #5位以上=故障
elapsedtime尝试以下功能:

 # calculate number of minutes of timestamp
 mins <- function(x){
   floor(x/100)*60+x%%100
 }

 # calculate difference in minutes
 elapsedtime <- function(S,E){
   mins(E)-mins(S)
 }

因此,当其中一个或两个时间戳都是5位数字时,您将在差异中得到一个
NA

我喜欢它。谢谢你的解决方案。%%函数的具体作用是什么?模运算符计算整数除数中的余数。
ifelse(x<10000,x,NA)