Utilização da função diff em R

Manav Narula 9 fevereiro 2021
Utilização da função diff em R

O cálculo da diferença entre os elementos é uma operação fundamental. Podemos também calcular facilmente a diferença entre elementos consecutivos, mas para grandes conjuntos de dados que o conseguem manualmente, linha a linha não é eficiente.

Na programação R, o diff() calcula a diferença entre os elementos consecutivos do vector, que é passada para a função. O resultado final é também um vector. Por exemplo:

x <- c(5,3,4,3,8,9,4,8,1)
diff(x)
[1] -2  1 -1  5  1 -5  4 -7

Como se pode ver no exemplo acima, a função diff() devolve a diferença entre elementos consecutivos (3 - 5 = -2, 4 - 3 = 1,….). Além disso, repare que o vector resultante tem menos um elemento; isto é porque não pode calcular a diferença do último elemento.

Podemos também adicionar dois parâmetros à função diff(). Estes são os parâmetros lag e as differences.

O parâmetro lag pode especificar o intervalo entre os elementos cuja diferença é calculada. É 1 por defeito. Quando o parâmetro lag é 2, a função diff()calculará a diferença entre o primeiro e terceiro elemento, o segundo e quarto elemento, etc. O exemplo seguinte irá esclarecer as coisas:

diff(x, lag = 2)
[1] -1  0  4  6 -4 -1 -3

O parâmetro differences é utilizado para especificar a ordem das diferenças. Por exemplo, fixamo-lo em 2; depois calculará primeiro a diferença entre os elementos vectoriais dados, depois calculará novamente a diferença dos elementos consecutivos do vector resultante. O seguinte trecho de código explicará isto:

diff(x)
[1] -2  1 -1  5  1 -5  4 -7
diff(x, differences = 2)
[1]   3  -2   6  -4  -6   9 -11

Também podemos ter estes dois parâmetros definidos para algum valor específico ao mesmo tempo. Por exemplo, no código abaixo, definimos o lag como 2 e as differences como 2.

diff(x, differences = 2, lag = 2)
[1]  5  6 -8 -7  1
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Artigo relacionado - R Math