根据 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_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
我有一个三列 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_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