从hms转换为小时:r分钟,或者从hms转数分钟

时间:2018-04-18 07:45:28

标签: r

我有一个hms的列,但我想将这些时间仅绘制为分钟,因为我显示的是直方图。

问题是:我在1min 10sec发生了10个事件,在1min 47sec发生了3个事件,但我想在1分钟内完成所有事件。

我正在绘制提前期,所以我只想显示会议记录。

我希望我的解释很清楚,如果不是,我可以写更多

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你可以用这样的基础R函数来解决你的问题

library(hms)
test_time <- as.hms(c("10:01:10", "11:01:47",
    "12:34:56", "15:01:47", "16:01:23", "18:01:47"))
as.numeric(format(as.POSIXlt(test_time), "%M"))

或者像这样

as.POSIXlt(paste(Sys.Date(), test_time))$min

另一个选项是minutes()包中的lubridate函数:

library(lubridate)
minute(test_time)

答案 1 :(得分:0)

如果您更喜欢使用dplyr,请尝试以下方法:

    $(document).ready(function(){
    var defaultOptions = {  searchDelay: 500,
                            minChars: 3
                        };
    $('.tokeninput').each(function () {
        var field = $(this),
            dataOptions = field.data('tokenoptions');
            if(dataOptions){
                var populateValue = dataOptions.prePopulate;
                if(populateValue){
                    dataOptions = jQuery.grep(dataOptions, function(a) {
                        return a !== 'prePopulate';
                    });
                    populateValue = $.parseJSON(populateValue);
                    dataOptions = $.extend(defaultOptions, {prePopulate:[populateValue]});                                              
                }
                defaultOptions = $.extend(defaultOptions, dataOptions);
            }                   
            console.log(defaultOptions);
        field.tokenInput("url_to_live_search", defaultOptions);
    });
});  

哪个返回:

library(hms)
library(dplyr)
c("10:01:10", "11:01:47", "12:34:56", "15:01:47", "16:01:23", "18:01:47") %>% 
    as_hms() %>% 
    as.POSIXlt() %>% 
    format("%H:%M") %>% 
    paste0(., ":00") %>% 
    as_hms()

此过程仅剥离[1] 10:01:00 [2] 11:01:00 [3] 12:34:00 [4] 15:01:00 [5] 16:01:00 [6] 18:01:00 值,并将其替换为seconds值。这样应该可以达到您想要的结果。

但是,如果包含日期,则可以使用lubridateround_date()函数:

00

哪个返回:

library(lubridate)
c("2020-08-08 10:01:10", "2020-08-08 11:01:47", "2020-08-08 12:34:56", "2020-08-08 15:01:47", "2020-08-08 16:01:23", "2020-08-08 18:01:47") %>% 
    ymd_hms() %>% 
    round_date("minute")