¿Cómo puedo calcular el cambio porcentual dentro de un grupo para varias columnas en R?

Tengo un marco de datos con una columna de ID, una columna de fecha (12 meses para cada ID) y tengo 23 variables numéricas. Me gustaría obtener el cambio porcentual por mes dentro de cada ID. Estoy usando el paquete quantmod para obtener el cambio porcentual.

Aquí hay un ejemplo con solo tres columnas (por simplicidad):

ID Date V1 V2 V3
1  Jan   2  3  5
1  Feb   3  4  6
1  Mar   7  8  9
2  Jan   1  1  1
2  Feb   2  3  4
2  Mar   7  8   8

Traté de usar dplyr y la función summaryise_cada uno, pero no tuvo éxito. Más específicamente, probé lo siguiente (train es el nombre del conjunto de datos):

library(dplyr)
library(quantmod)

group1<-group_by(train,EXAMID)

foo<-function(x){
  return(Delt(x))
}

summarise_each(group1,funs(foo))

También intenté usar la función do en dplyr, pero tampoco tuve éxito con eso (¡creo que tuve una mala noche!).

Creo que el problema es la función Delt. Cuando reemplazo a Delt con la función de suma:

foo<-function(x){
      return(sum(x))
    }
summarise_each(group1,funs(foo))

El resultado es que cada variable se suma a través de la fecha para cada ID. Entonces, ¿cómo puede el porcentaje cambiar mes a mes para cada ID?

Respuestas a la pregunta(2)

Su respuesta a la pregunta