【问题标题】:How to get hours and minutes by subtracting two dates with R如何通过用 R 减去两个日期来获得小时和分钟
【发布时间】:2016-01-14 22:40:22
【问题描述】:

我在 R 中有两列,它们都是具有以下格式的日期..

   1/2/2015 3:00:00 PM

我需要创建一个新列,即“小时”,这将是两个日期之间经过的小时数。我已经尝试过了,但它给了我几天的不同..

col1 <- df$collection.when
col2 <- df$discardable_when
col3 <- as.Date(col1) - as.Date(col2)
head(col3)
# > Time differences in days
[1] -393   NA   NA   NA -485   NA

编辑:

@HubertL 的答案似乎是正确的解决方案,但是由于未知原因,我无法获得完整的 data.frame。这是显示我的工作流程的屏幕截图。任何帮助是极大的赞赏。

【问题讨论】:

    标签: r date format


    【解决方案1】:

    使用包含时间信息的as.POSIXct,而不是as.Date

    您还可以使用difftime 指定输出单位。

    time1 = as.POSIXct("2015-01-01 01:00:00")
    time2 = as.POSIXct("2015-03-02 05:00:00 PM")
    
    difftime(time2, time1, units = "min")
    Time difference of 86640 mins
    

    【讨论】:

    • 我想过这个,但是它不接受数据当前的格式。我将如何从数据列中删除 AM 或 PM? @Señor O
    • 将格式说明符添加到 POSIXct 参数。 as.POSIXct("1/2/2015 3:00:00 PM", format = "%m/%d/%Y %I:%M:%S %p")
    【解决方案2】:

    也许Dates 没有时间。

    您可能可以使用 POSIXct :

    a <- as.POSIXct(strptime("1/2/2015 2:00:00 PM", "%m/%d/%Y %I:%M:%S %p"), tz="")
    b <- as.POSIXct(strptime("1/2/2015 5:00:00 PM", "%m/%d/%Y %I:%M:%S %p"), tz="")
    c <- b - a; 
    units(c) <- "hours"
    as.numeric(c)
    [1] 3
    

    【讨论】:

    • 我觉得这个解决方案应该可以工作,但它给了我意想不到的结果,请查看编辑
    • 我注意到日期在干净的时候有效..“2015 年 1 月 2 日下午 5:00:00”但如果它的“2015 年 1 月 2 日下午 5:11:011”代码中断?你能帮我解释一下吗..
    猜你喜欢
    • 2019-02-18
    • 1970-01-01
    • 2012-11-04
    • 2011-11-19
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多