Here is what I assume to be the correct plyr solution:
df <- ddply( df, .(c,d) , transform, simplereturn=c(NA, a[-1] / head(a, -1)))
And here the equivalent data.table code:
library(data.table)
setDT(df)
df[, simplereturn := c(NA, a[-1] / head(a, -1)), by=list(c, d)]