Рассчитать разницу повторных измерений в R

df:

ID     cat1
A0001   358
A0001   279
A0049   324
A0049   358
A0049   432

Чтобы вычислить разницу в значении в cat1 между повторными измерениями (по ID). Ожидаемый результат df должен выглядеть так:

 ID    cat1 cat1_diff
A0001   358   NA
A0001   279   -79
A0049   324   NA
A0049   358   26
A0049   432   74

Я был бы признателен за любые идеи, как это сделать в R.


person sleepyjoe    schedule 08.09.2015    source источник


Ответы (1)


Мы можем использовать dplyr и функцию lag:

library(dplyr)
df %>% group_by(ID) %>%
       mutate(cat1_diff = cat1 - lag(cat1))

Source: local data frame [5 x 3]
Groups: ID

     ID cat1 cat1_diff
1 A0001  358        NA
2 A0001  279       -79
3 A0049  324        NA
4 A0049  358        34
5 A0049  432        74
person jeremycg    schedule 08.09.2015
comment
этот работает! Большое спасибо - person sleepyjoe; 09.09.2015