Создание таблицы на основе критериев из другой таблицы в r - PullRequest
0 голосов
/ 17 марта 2020

У меня есть таблица из трех столбцов (Table_1), и я хотел бы создать другую таблицу на основе Table_1. Таблица имеет персональный идентификатор, а также дни начала и окончания работы.

Table_1 <- data.frame(ID = c("A", "B", "C"), Start_Day = c(1, 20, 38), End_Day = c(14, 29, 42))

Новая таблица, которую я хотел бы создать, будет иметь два столбца, а именно ID и Неделя. Количество строк для каждого уровня идентификатора равно количеству бинов (недель) в End_Day и Start_Day. Например, у идентификатора A будут 2-недельные корзины 1 (дни 1-7) и 2 (дни 8-14), у идентификатора B будут 3-недельные корзины, 3 (дни 15-21), 4 (дни 22-28) и 5 (дни 29-35). Ожидаемый результат:

Table_2 <- data.frame(ID = c("A", "A", "B", "B", "B", "C" ), Week = c(1, 2, ,3, 4, 5, 6))

1 Ответ

0 голосов
/ 17 марта 2020

Одним из способов было бы разделить Start_Day и End_Day на 7 и создать последовательность между ними, используя map2, переводя данные в длинный формат, используя unnest.

library(dplyr)

Table_1 %>%
  mutate_at(-1, ~ceiling(./7)) %>%
  mutate(Week = purrr::map2(Start_Day, End_Day, seq)) %>%
  tidyr::unnest(Week) %>%
  select(ID, Week)

# A tibble: 6 x 2
#   ID     Week
#  <fct> <int>
#1 A         1
#2 A         2
#3 B         3
#4 B         4
#5 B         5
#6 C         6
...