I have an unbalanced quarterly panel data set with missing values. I want to substract variable `A2` from `A1` in subsequent quarters. Note that I do not want to get differences of A2, but substract DIFFERENT variables from each other. Differences should be calculated separately for every uid. Besides changing years like Q4 1999 and Q1 2000 are meant to be subsequent.

I am really not sure whether i should concatenate my time index here since packages like zoo only take one index. But that's not the problem here. Here is a some example data:

```
structure(list(uid = c(1, 1, 1, 2, 2, 3, 3, 3), tndx = c(1999.4, 
2000.1, 2000.2, 1999.4, 2000.1, 2000.1, 2000.2, 2000.3), A1 = c(2, 
2, 2, 10, 11, 1, 1, 1), A2 = c(3, 3, 3, 14, 14, 2, 100, 2)), .Names = c("uid", 
"tndx", "A1", "A2"), row.names = c(NA, -8L), class = "data.frame")

# which results in
  uid   tndx A1  A2
1   1 1999.4  2   3
2   1 2000.1  2   3
3   1 2000.2  2   3
4   2 1999.4 10  14
5   2 2000.1 11  14
6   3 2000.1  1   2
7   3 2000.2  1 100
8   3 2000.3  1   2  

```

If you prefer a separated index, use this example:

```
# Thx Andrie!
x2 <- data.frame(x, colsplit(x$tndx, "\\.", names=c("year", "qtr")))

```

Is there a good way to solve this with `reshape2`, `plyr` or even base or would you rather write a custom function?

Note, it is also possible that some `uid` occurs only once. Obviously you can't calculate a lagged difference then. Still I need to check for that and create an NA then.