创建一个时间到十进制函数

Creating a time to decimal function

我找到了一个 R 脚本,我将对其进行补充以进行分析。

但是,我注意到找不到 time_to_deimal 作为函数。如何为变量 time_observation_started 创建此函数来计算允许将时间转换为小数的函数? 示例代码:

structure(list(time_observations_started = c("14:00:00", NA, 
"16:00:00", "15:00:00", "09:00:00", "09:45:00", "12:00:00", "08:30:00", 
"08:00:00", "07:00:00", "13:00:00", "10:00:00", NA, "08:00:00", 
NA, "12:00:00", NA, "14:00:00", "14:00:00", NA, "14:35:00", NA
)), row.names = c(NA, -22L), class = c("tbl_df", "tbl", "data.frame"
), rollup = TRUE)

脚本在这里:

#clean up variables

 ebd_zf_all <- ebd_zf_all %>% 
  
  mutate(
    
    # use species code
    
    species_code = ebird_species(scientific_name, "code"),
    
    # convert X to NA
    
    observation_count = if_else(observation_count == "X", 
                                
                                NA_character_, observation_count),
    
    observation_count = as.integer(as.character(observation_count)),
    
    # effort_distance_km to 0 for non-travelling counts
    
    effort_distance_km = if_else(protocol_type != "Traveling", 
                                 
                                 0, effort_distance_km),
    
    # convert time to decimal hours since midnight
    
    time_observations_started = time_to_decimal(time_observations_started))

你可以试试:

data <- structure(list(time_observations_started = c("14:00:00", NA, 
                                                     "16:00:00", "15:00:00", "09:00:00", "09:45:00", "12:00:00", "08:30:00", 
                                                     "08:00:00", "07:00:00", "13:00:00", "10:00:00", NA, "08:00:00", 
                                                     NA, "12:00:00", NA, "14:00:00", "14:00:00", NA, "14:35:00", NA
)), row.names = c(NA, -22L), class = c("tbl_df", "tbl", "data.frame"
), rollup = TRUE)

as.numeric(lubridate::hms(data$time_observations_started))/86400

 [1] 0.5833333        NA 0.6666667 0.6250000 0.3750000 0.4062500 0.5000000 0.3541667 0.3333333 0.2916667 0.5416667
[12] 0.4166667        NA 0.3333333        NA 0.5000000        NA 0.5833333 0.5833333        NA 0.6076389        NA