Como calcular o deslocamento por grupo usando dplyr
Você pode usar a seguinte sintaxe para calcular valores deslocados de grupo em R usando o pacote dplyr :
df %>%
group_by(var1) %>%
mutate(lag1_value = lag(var2, n= 1 , order_by=var1))
Nota : A função mutate() adiciona uma nova variável ao quadro de dados que contém os valores atrasados.
O exemplo a seguir mostra como usar essa sintaxe na prática.
Exemplo: Calcular valores deslocados por grupo usando dplyr
Suponha que temos o seguinte quadro de dados em R que mostra as vendas realizadas por duas lojas diferentes em dias diferentes:
#create data frame df <- data. frame (store=c('A', 'B', 'A', 'B', 'A', 'B', 'A', 'B'), sales=c(7, 12, 10, 9, 9, 11, 18, 23)) #view data frame df blind sales 1 to 7 2 B 12 3 to 10 4 B 9 5 to 9 6 B 11 7 to 18 8 B 23
Podemos usar o código a seguir para criar uma nova coluna que exiba os valores de vendas defasadas de cada loja:
library (dplyr) #calculate lagged sales by group df %>% group_by(store) %>% mutate(lag1_sales = lag(sales, n= 1 , order_by=store)) # A tibble: 8 x 3 # Groups: store[2] store sales lag1_sales 1 to 7 NA 2 B 12 NA 3 to 10 7 4 B 9 12 5 to 9 10 6 B 11 9 7 to 18 9 8 B 23 11
Veja como interpretar o resultado:
- O primeiro valor de lag1_sales é NA porque não existe valor anterior para as vendas da loja A.
- O segundo valor de lag1_sales é NA porque não existe valor anterior para as vendas da loja B.
- O terceiro valor de lag1_sales é 7 porque é o valor de vendas anterior da loja A.
- O quarto valor de lag1_sales é 12 porque é o valor de vendas anterior da loja B.
E assim por diante.
Observe que você também pode alterar o número de atrasos usados alterando o valor de n na função lag() .
Recursos adicionais
Os tutoriais a seguir explicam como realizar outros cálculos comuns em R:
Como calcular uma soma acumulada usando dplyr
Como calcular soma por grupo em R
Como calcular a média por grupo em R