Я хочу создать новую переменную на основе
1. вложенного вектора текущего наблюдения
2. значений из текущих и других наблюдений.
Вот мой пример:
D <- tibble(team = c(101, 101, 101, 102, 102, 102),
id = c(1, 2, 3, 1, 2, 3),
x = c(3, 7, 5, 1, 4, 10),
y = list(c(5,5,5), c(8,5,2), c(6,2,7), c(3,9,3), c(8,3,4), c(4,4,7)))
Я хочу создать новую переменную, равную
abs(y[1] - x[id==1]) + abs(y[2] - x[id==2]) + abs(y[3] - x[id==3])
Этот кодочевидно неправильный синтаксис, просто для демонстрации того, что я хочу вычислить. Необходимо использовать текущие, а также опережающие или запаздывающие (или оба) наблюдения x
, в зависимости от значения id
.
Ожидаемый результат в этом примере будет z = c(4, 10, 10, 14, 14, 6)
Я попробовал что-то вроде group_by(team)
, за которым последовала попытка использовать map()
, но я не могу найти ничего обещающего. Какое самое элегантное решение? Буду очень признателен за вашу помощь!