У меня есть этот фрейм данных:
ID Date X 123_P 456_P 789_P choice
A 07/16/2019 . 1.5 1.8 1.6 123
A 07/17/2019 . 2.0 2.1 4.5 789
A 07/18/2019 . 3.0 3.2 NaN 0
A 07/19/2019 . 2.1 2.2 4.5 456
B 07/16/2019 . 1.5 1.8 1.6 789
B 07/17/2019 . 2.0 2.1 4.5 0
B 07/18/2019 . 3.0 3.2 NaN 123
Я хочу создать новые переменные: 123_PD, 456_PD, 789_PD (у меня гораздо больше переменных, чем в этом примере, поэтому это не следует делать вручную).
Новые переменные будут обозначать различия между переменными 123_P, 456_P, 789_P и теми же переменными из предыдущей строки, с учетом предыдущего выбора .
Я имею в виду, если выбор из предыдущей строки был "123", то различия между этими переменными будут относиться к значению в "123_P" из предыдущей строки.
Примечания:
- Значение 0 означает, что выбора нет, поэтому различия будут относиться к последнему выбору этого идентификатора.
- Это должно быть сделано для каждого ID отдельно.
Ожидаемый результат:
ID Date X 123_P 456_P 789_P choice 123_PD 456_PD 789_PD
A 07/16/2019 . 1.5 1.8 1.6 123 0 0 0
A 07/17/2019 . 2.0 2.1 4.5 789 0.5 0.6 3.0
A 07/18/2019 . 3.0 3.2 NaN 0 -1.5 -1.3 NaN
A 07/19/2019 . 2.1 2.2 4.5 456 -2.4 -2.3 0
B 07/16/2019 . 1.5 1.8 1.6 789 0 0 0
B 07/17/2019 . 2.0 2.1 4.5 0 0.4 0.5 2.9
B 07/18/2019 . 3.0 3.2 NaN 123 1.4 1.6 NaN