根据 r 中另一个 table 的条件创建 table

Creating a table based on criteria from another table in r

我有一个三列 table (Table_1),我想根据 Table_1 创建另一个 table。 table 有个人 ID 和工作开始和结束日期。

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

我想创建的新 table 将有两列,即 ID 和 Week。每个 ID 级别的行数等于 End_Day 和 Start_Day 的 bin(周)数。例如,ID A 将有 2 个星期 bins 1(第 1-7 天)和 2(第 8-14 天),ID B 将有 3 个星期 bins,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))

一种方法是将 Start_DayEnd_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