R: назначить группу на основе 24-часового периода - PullRequest
0 голосов
/ 30 мая 2018

У меня есть этот набор данных:

    test <- data.frame("Event" = c("A", "B", "C","D","E"),"startTime" = c("2017-08-01 00:37:27", "2017-08-01 00:44:32", "2017-08-01 23:30:00","2017-08-01 23:55:47", "2017-08-02 01:00:00" ), "endTime" = c("2017-08-01 20:13:13", "2017-08-01 21:30:45", "2017-08-02 09:00:00","2017-08-01 23:56:47", "2017-08-02 04:18:38"), "Bin" = c(1,1,2,1,2))

Я хочу создать столбец Bin, в котором вы присваиваете значение 1 n, основываясь на 24-часовом кадре startTime и endTime.Например, события A и B принадлежат Bin (группе) # 1, поскольку оба они начинаются 2017-08-01 и заканчиваются в одну и ту же дату.Тем не менее, событие C принадлежит bin # 2, потому что оно заканчивается на следующий день вместо 2017-08-01.Событие D принадлежит бин № 2, потому что оно начинается и заканчивается 2017-08-02 и так далее.

Я не знаю, как правильно назначить значение группы на основе этой логики.Любая помощь будет принята с благодарностью!Спасибо!

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Здесь bin2 - это количество дней от минимального значения endTime.

test %>%
    mutate(bin2 = as.integer(as.Date(endTime) - min(as.Date(endTime))) + 1)
0 голосов
/ 30 мая 2018

Это работает:

library(dplyr)
library(lubridate)

test %>%
mutate(Bin = if_else(as.Date(test$endTime) - as.Date(test$startTime) == 0, 1,2 )) -> df
...