我找到了一个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