I have a data frame of numeric and factor data and would like to calculate the absolute and percent change between rows
df <- data.frame(names=c("A","A","A","A","B","B","B","C","C","C"),
x1=c(1:10),
x2=c(11:20),
x3=c(21:30))
names x1 x2 x3
A 1 11 21
A 2 12 22
A 3 13 23
A 4 14 24
B 5 15 25
B 6 16 26
B 7 17 27
C 8 18 28
C 9 19 29
C 10 20 30
I am trying to get the output to look something like this:
names x1 x2 x3 x1.absdif x2.absdif x3.absdif x1.pcndif x2.pcndif x3.pcndif
A 1 11 21 NA NA NA NA NA NA
A 2 12 22 1 1 1 1.00 0.09 0.05
A 3 13 23 1 1 1 0.50 0.08 0.05
A 4 14 24 1 1 1 0.33 0.08 0.04
B 5 15 25 NA NA NA NA NA NA
B 6 16 26 1 1 1 0.20 0.07 0.04
B 7 17 27 1 1 1 0.17 0.06 0.04
C 8 18 28 NA NA NA NA NA NA
C 9 19 29 1 1 1 0.13 0.06 0.04
C 10 20 30 1 1 1 0.11 0.05 0.03
Any help would be appreciated.