【问题标题】:How to add minutes to time in R如何在R中添加分钟
【发布时间】:2020-02-22 17:43:23
【问题描述】:

我有一个包含时间(例如:10.24)和分钟(例如:31)列的数据框。

我想添加这两列。结果列将是 10.24+31(min)=10.55。我尝试使用,但它给出了错误的时间。

dput(stack_data)
structure(list(time = c("10:24", "10:40"), timeInMin = c(31L, 
23L)), row.names = c(19L, 23L), class = "data.frame")

我试过这样:

stack_data$time <- (hm(stack_data$time))
stack_data$timeInMin <- hms((stack_data$time) + (stack_data$timeInMin))

输出:

time         timeInMin
10H 24M 0S    10:24:31
10H 40M 0S    10:40:23

我得到一个错误的答案。你能建议我怎么做吗?谢谢。

【问题讨论】:

    标签: lubridate r time lubridate


    【解决方案1】:

    我们可以从data.table使用as.ITime

    library(data.table)
    stack_data$time <- as.ITime(paste0(stack_data$time, ":00"))
    stack_data$timeInMin <- stack_data$time +
                        as.ITime(paste0("00:", stack_data$timeInMin, ":00"))
    stack_data$timeInMin
    #[1] "10:55:00" "11:03:00"
    

    或使用hm

    library(lubridate)
    hm(stack_data$time)  + minutes(stack_data$timeInMin)
    #[1] "10H 55M 0S" "10H 63M 0S"
    

    【讨论】:

    • @Magie 你能举个例子吗as.ITime("23:00:00") + as.ITime("01:25:00")# [1] "24:25:00"
    • 如果时间是 13:24 并且要添加的分钟是 20 ,我必须得到 13:44,它适用于ITime
    • @Magie 它可以工作 as.ITime("13:24:00") + as.ITime("00:20:00")# [1] "13:44:00" 如果你检查我的代码,我是 pasteing 00 在分钟的左侧和右侧,: 这样as.ITime 可以选择提高格式
    • 同时加上 64 分钟的时间是 NA。例如,``` 07:47:00 + (00,64,00) ``` 它给出的是 NA 而不是 08:51:00。为什么?
    • 它现在可以工作了。将 64 分钟转换为 01:04:00 格式。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 2020-11-24
    • 2017-09-14
    • 2020-09-10
    • 2010-09-20
    • 2022-12-02
    相关资源
    最近更新 更多