将时间从 1 小时更改为 30 分钟

时间:2021-03-24 10:21:06

标签: r

之前有人为我提出并回答了一个问题,请参阅此处:(subsetting data based on four columns using if else statements)

请他们解决了问题,但我有一个后续问题,如何将代码中的时间从 1 小时更改为 30 分钟?

df %>% 
  group_by(Location, Site, Species, Date) %>% 
  mutate(difftime = as.numeric(hms::as_hms(Time) - hms::as_hms(lag(Time, 1)))/3600) %>%
      mutate(independent = case_when(
        is.na(difftime) ~ TRUE,
        difftime >= 1 ~ TRUE,
        difftime < 1  ~ FALSE,
        TRUE ~ FALSE)

我对代码进行了多次更改,但未能找到满意的答案!

1 个答案:

答案 0 :(得分:0)

建议使用 baseR 中的 difftime 函数,而不是直接减去时间单位,其中可以明确提供单位。在以下语法中,我使用 unit = "mins" 在几分钟内获得输出,然后相应地更改您的语法。

df %>% 
  group_by(Location, Site, Species, Date) %>% 
  mutate(difftime = as.numeric(difftime(hms::as_hms(Time), hms::as_hms(lag(Time, 1)) , unit = "mins"))) %>%
  mutate(independent = case_when(
    is.na(difftime) ~ TRUE,
    difftime >= 30 ~ TRUE,
    difftime < 30  ~ FALSE,
    TRUE ~ FALSE)
  )

数据

df <- readr::read_table2("Location       Site     Species    Date     Time
Twelve         2        frog       14-10    13:45
Twelve         2        frog       14-10    14:45
Twelve         2        frog       14-10    15:44
Twelve         2        badger     14-10    15:44
Thirteen       2        badger     14-10    16:44
Thirteen       2        badger     14-10    17:42")