Как проверить того же пользователя доступно в следующие полчаса в г? - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть кадр данных, как показано ниже.

df:
x1       x2     x3       X4
user1  13:00    12:30    13:30
user2  13:30    13:00    14:00
user3  15:00    14:30    15:30
user1  13:10    12:40    13:40

Здесь X1 - пользователь, X2 - фактическое время, X3 - меньше получаса, чем фактическое время. X4 - это следующие полчаса времени, чем на самом деле.

Здесь у нас есть user1, повторенный в следующие полчаса, и я должен посмотреть на основе столбца времени X3. Время X3 12:40 (т. Е. 12:30 <13:00 <13:30). Итак, User1 доступен и в течение следующего часа. </p>

Я должен проверить, как указано выше. Пожалуйста, предложите мне идеи.

Expected Output:
X1           X2
user1       1
user2       0
user3       0

X5 is the new column that will tell user available next half an hour time or not. 1 means available, 0 means not available.

1 Ответ

0 голосов
/ 24 апреля 2020

Я бы предложил использовать chron::times для работы со временем и dplyr для сгруппированных операций.

library(chron)
library(dplyr)

df %>%
  mutate(x2 = times(paste0(x2, ":00"))) %>%
  select(x1, x2) %>%
  left_join(., ., by = "x1") %>%
  group_by(x1) %>%
  summarize(result = as.integer(any(
    x2.y - x2.x > times("00:00:00") &
      x2.y - x2.x <= times("00:30:00")
  )))
# # A tibble: 3 x 2
#   x1    result
#   <fct>  <int>
# 1 user1      1
# 2 user2      0
# 3 user3      0

Используя этот пример данных:

df = read.table(
text = "x1       x2     x3       X4
user1  13:00    12:30    13:30
user2  13:30    13:00    14:00
user3  15:00    14:30    15:30
user1  13:10    12:40    13:40", header = T)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...