You can use the diff() function in R to calculate lagged differences between consecutive elements in vectors.
diff(x)
The following examples show how to use this function in practice.
Example 1: Find Lagged Differences Between Consecutive Elements
The following code shows how to find the lagged differences between elements in a vector:
#define vector
x #find lagged differences between consecutive elements
diff(x)
[1] 2 3 -1 5
Here is how the lagged differences were calculated:
- 6 – 4 = 2
- 9 – 6 = 3
- 8 – 9 = -1
- 13 – 8 = 5
Example 2: Find Lagged Differences Between Non-Consecutive Elements
The following code shows how to use the lag argument to find the lagged differences between elements that are 2 positions apart in a vector:
#define vector x #find lagged differences between elements 2 positions apart diff(x, lag=2) [1] 5 2 4
Here is how the lagged differences were calculated:
- 9 – 4 = 5
- 8 – 6 = 2
- 13 – 9 = 4
Example 3: Find Lagged Differences in Column of Data Frame
The following code shows how to find the lagged differences between a specific column in a data frame:
#define data frame df frame(var1=c(1, 3, 3, 4, 5), var2=c(7, 7, 8, 3, 2), var3=c(3, 3, 6, 6, 8), var4=c(1, 1, 2, 8, 9)) #view data frame df var1 var2 var3 var4 1 1 7 3 1 2 3 7 3 1 3 3 8 6 2 4 4 3 6 8 5 5 2 8 9 #find lagged differences between elements in 'var1' column diff(df$var1) [1] 2 0 1 1
Example 4: Find Lagged Differences in Several Columns of Data Frame
The following code shows how to use the sapply() function to find the lagged differences between several columns in a data frame:
#define data frame df frame(var1=c(1, 3, 3, 4, 5), var2=c(7, 7, 8, 3, 2), var3=c(3, 3, 6, 6, 8), var4=c(1, 1, 2, 8, 9)) #view data frame df var1 var2 var3 var4 1 1 7 3 1 2 3 7 3 1 3 3 8 6 2 4 4 3 6 8 5 5 2 8 9 #find lagged differences between elements in each column sapply(df, diff) var1 var2 var3 var4 [1,] 2 0 0 0 [2,] 0 1 3 1 [3,] 1 -5 0 6 [4,] 1 -1 2 1
Additional Resources
A Guide to apply(), lapply(), sapply(), and tapply() in R
How to Apply Function to Each Row in Matrix or Data Frame in R