Я пытаюсь добавить столбец в мой существующий набор данных.Набор данных имеет три столбца:
Student
(это столбец с идентификатором участника), Week
(номер недели в году, в течение которогоданные были собраны), и Day
(номер дня недели, в течение которого были собраны данные).
Теперь появился новый столбец Obs
, которым я являюсьпопытка создать будет содержать прогрессивное число (от 1 до n), относящееся к неделе, в течение которой тестировался каждый студент.
Я пытался использовать group_by
в сочетании с rep
, но это не похожечтобы получить желаемый результат:
Week <- c(1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 4, 4)
Day <- c(1, 2, 3, 2, 3, 5, 1, 3, 2, 3, 4, 5)
Student <- c("A", "A", "A", "B", "B", "B", "B", "B", "C", "C", "C", "C")
fake.db <- data.frame(Student, Week, Day)
library(dplyr)
fake.db %>%
group_by(Student) %>%
mutate(Obs = rep(1:length(Student), each = Week))
# Student Week Day Obs
# <fct> <dbl> <dbl> <int>
# 1 A 1 1 1
# 2 A 1 2 2
# 3 A 1 3 3
# 4 B 2 2 1
# 5 B 2 3 2
# 6 B 2 5 3
# 7 B 3 1 4
# 8 B 3 3 5
# 9 C 4 2 1
#10 C 4 3 2
#11 C 4 4 3
#12 C 4 5 4
То, что я хотел бы получить, отличается.За первую неделю сбора данных следует сообщать 1
, а для студентов, для которых данные были собраны в течение второй недели, следует указывать 2
и т. Д.:
# Student Week Day Obs
#1 A 1 1 1
#2 A 1 2 1
#3 A 1 3 1
#4 B 2 2 1
#5 B 2 3 1
#6 B 2 5 1
#7 B 3 1 2
#8 B 3 3 2
#9 C 4 2 1
#10 C 4 3 1
#11 C 4 4 1
#12 C 4 5 1