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

问题描述 投票:0回答:1

我有一个三列表(Table_1),我想基于Table_1创建另一个表。该表具有个人ID以及工作的开始和结束日期。

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

我要创建的新表将具有两列,即ID和Week。每个ID级别的行数等于End_Day和Start_Day的bin(周)数。例如,ID A将具有2个星期档1(第1-7天)和2(8-14天),ID 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))
r conditional-statements intervals bin
1个回答
0
投票

一种方法是将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
© www.soinside.com 2019 - 2024. All rights reserved.