假设我有以下tibble
tb <- tibble(subject = rep(c("a", "b", "c"), each = 20), days = rep(-2:17, 3))
# A tibble: 60 x 2
subject days
<chr> <int>
1 a -2
2 a -1
3 a 0
4 a 1
5 a 2
6 a 3
7 a 4
8 a 5
9 a 6
10 a 7现在,我想创建一个变量,将day变量重新编码为保存学习周的变量。
但是,我希望避免ofc在大型case_when()语句中“手动”执行此操作,因为时不时会有更多数据传入。从第0天开始,我希望这个变量值每7天递增1。所有小于0的值都会得到-1(这里计算周数并不重要)。
示例性输出:
# A tibble: 60 x 2
subject days study_week
<chr> <int> <int>
1 a -2 -1
2 a -1 -1
3 a 0 1
4 a 1 1
5 a 2 1
6 a 3 1
7 a 4 1
8 a 5 1
9 a 6 1
10 a 7 2发布于 2021-11-16 09:15:12
library(tidyverse)
tb %>%
mutate(study_week = ifelse(days < 0, -1, floor(days / 7) + 1))
# <chr> <int> <dbl>
# 1 a -2 -1
# 2 a -1 -1
# 3 a 0 1
# 4 a 1 1
# 5 a 2 1
# 6 a 3 1
# 7 a 4 1
# 8 a 5 1
# 9 a 6 1
#10 a 7 2https://stackoverflow.com/questions/69986298
复制相似问题