Итак, у меня есть датафрейм, который выглядит так:
# Identifier DATE RDATE X Y Z
# 1 1990-08-29 1990-04-30 1 2 3
# 1 1990-09-29 1990-04-30 1 2 3
# 1 1990-10-29 1990-07-30 3 5 7
# 2 1990-11-29 1990-07-30 2 1 4
# 2 1990-12-29 1990-10-30 2 1 5
# 3 1990-05-29 1990-01-30 1 2 3
# 3 1990-06-29 1990-04-30 4 4 4
# 3 1990-07-29 1990-04-30 4 4 4
# 3 1990-08-29 1990-06-30 1 1 1
По сути, я хотел бы сдвинуть столбцы RDATE, X, Y, Z кадра данных таким образом, чтобы столбец RDATE всегда был ближайшей датой, предшествующей дате в столбце DATE, с учетом идентификатора. Обратите внимание, что некоторые даты в DATE встречаются несколько раз для разных идентификаторов.
Я предполагаю, что решение потребует от меня группировки идентификатора, что я могу сделать. Моя проблема заключается в сравнении столбца DATE с RDATE, а затем смещении других столбцов в зависимости от местоположения.
То есть мой ожидаемый результат будет:
# Identifier DATE RDATE X Y Z
# 1 1990-08-29 1990-07-30 3 5 7
# 1 1990-09-29 1990-07-30 3 5 7
# 1 1990-10-29 1990-07-30 3 5 7
# 2 1990-11-29 1990-10-30 2 1 5
# 2 1990-12-29 1990-10-30 2 1 5
# 3 1990-05-29 1990-04-30 4 4 4
# 3 1990-06-29 1990-04-30 4 4 4
# 3 1990-07-29 1990-06-30 1 1 1
# 3 1990-08-29 1990-06-30 1 1 1