все ответы на 100% правильны и хорошо объяснены, но я сделал что-то хорошее и очень просто, чтобы сделать его отзывчивым.
здесь элемент займет 100% высоты порта просмотра, но когда дело доходит до мобильного его вид не выглядит особенно привлекательным на портретном (мобильном) телефоне, поэтому, когда порт просмотра становится меньше, элемент будет рушиться и перекрываться друг с другом. поэтому, чтобы сделать его немного отзывчивым, это код. надеюсь, что кто-то получит помощь от этого.
здесь JSfiddle Demo.
При условии, что ваши данные уже отсортированы, вы можете использовать:
aggregate(value ~ ID + group, df, diff)
ID group value
1 1 A -3
2 2 A 3
3 3 B 7
4 4 B 1
Или:
library(dplyr)
df %>%
group_by(ID, group) %>%
summarise(new_value = diff(value))