Я постараюсь изо всех сил объяснить это ...
Вот образец фрейма данных, который я использую:
df <- data.frame("name" = c("Ellie", "Ellie", "Ellie", "Ellie", "Nora", "Nora", "Nora", "Jake", "Jake"),
"year" = c(2000, 2001, 2002, 2003, 2002, 2003, 2004, 2000, 2001),
"grade" = c("A", "B", "D", "C", "C", "D", "C", "B", "B"))
Прямо сейчас у меня есть коллекция оценок разных люди с годами (например, оценки Ell ie с 2000 по 2003). Для каждой строки в моем фрейме данных я хочу добавить столбцы, показывающие, как учащийся делал в предыдущие годы. Итак, строка с Ell ie 2000 будет иметь NA во всех этих столбцах, поскольку нет данных о Ell ie до 2000 года. Строка с Ell ie 2001 будет иметь оценку 2000 Ell ie в столбце, озаглавленном что-то вроде «один год go», а остальное - NA. В строке с Ell ie 2002 будет оценка Ell ie за 2001 год в столбце под названием «один год go», ее оценка за 2000 год в «два года go» и т. Д. c.
Есть идеи, как это сделать? Спасибо!
РЕДАКТИРОВАТЬ: здесь фрейм данных раньше только для Ell ie (хотя я хотел бы l oop через фрейм данных и сделать это для всех строк, теперь только Ell ie строк):
name . . . year . . . grade
Ellie. . . 2000 . . . A
Ellie. . . 2001 . . . B
Ellie. . . 2002 . . . D
Ellie. . . 2003 . . . C
И фрейм данных после манипулирования Ell ie строк:
name . . . year . . . grade . . . y-1 grade . . . y-2 grade . . . y-3 grade
Ellie. . . 2000 . . . A . . . . . NA . . . . . . NA . . . . . . . NA
Ellie. . . 2001 . . . B . . . . . A . . . . . . NA . . . . . . . NA
Ellie. . . 2002 . . . D . . . . . B . . . . . . A . . . . . . . NA
Ellie. . . 2003 . . . C . . . . . D . . . . . . B . . . . . . . A
Окончательное количество столбцов (ie. Y-какое число) будет зависеть от самого длинного история. Таким образом, в этом случае Ell ie имеет наибольшее количество записей за период до четырех лет, поэтому каждый в наборе данных будет иметь столбцы для y-1, y-2 и y-3.