Trying to learn R and am stuck on an autocorrelation example. I want to regress the difference in x against the difference in y. I have x and y in a data frame, and would like the difference of x2 - x1 to be saved in a new column say dx. I have no idea how to go about this.
what I have:
data1
x y
5 3
8 9
3 1
1 5
. .
. .
. .
what I would like to get:
data1.dif
x y dx dy
5 3 NA NA
8 9 3 6
3 1 -5 -8
1 5 -2 4
. . . .
. . . .
Use diff
, and stick an NA to the beginning of the resulting vectors.
e.g.
data1 <- read.table(text=' x y
1 5 3
2 8 9
3 3 1
4 1 5')
# diff calculates the difference between consecutive pairs of
# vector elements
diff(data1$x)
[1] 3 -5 -2
# apply diff to each column of data1, bind an NA row to the beginning,
# and bind the resulting columns to the original df
data1.dif <- cbind(data1, rbind(NA, apply(data1, 2, diff)))
names(data1.dif) <- c('x', 'y', 'dx', 'dy')
data1.dif
x y dx dy
1 5 3 NA NA
2 8 9 3 6
3 3 1 -5 -8
4 1 5 -2 4