#r
Вопрос:
Предположим, у меня есть следующее tibble
:
tb lt;- tibble(subject = rep(c("a", "b", "c"), each = 20), days = rep(-2:17, 3)) # A tibble: 60 x 2 subject days lt;chrgt; lt;intgt; 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
Теперь я хочу создать переменную, которая преобразует переменную дня в переменную, содержащую учебную неделю.
Тем не менее, я хочу избежать, конечно, делать это «вручную» в большом case_when()
заявлении, так как время от времени поступает больше данных. Начиная с 0-го дня, я хочу, чтобы значение этой переменной увеличивалось на 1 каждые 7 дней. Все, что ниже 0, получает a — 1 (здесь не важно считать недели).
Примерный результат:
# A tibble: 60 x 2 subject days study_week lt;chrgt; lt;intgt; lt;intgt; 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
Комментарии:
1. Вы считаете неделю от
0
до6
или1
до7
?2. от 0 до 6, но я думаю, что решение будет аналогичным при подсчете от 1 до 7.
Ответ №1:
library(tidyverse) tb %gt;% mutate(study_week = ifelse(days lt; 0, -1, floor(days / 7) 1)) # lt;chrgt; lt;intgt; lt;dblgt; # 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
Комментарии:
1. да, теперь я чувствую себя неловко, потому что все так просто.