Boa noite pessoal, tudo bem com vocês?
Hoje meu irmão mais novo me pediu uma ajuda e eu tentei ajudar de algumas formas mas não consegui. Venho aqui pedir o suporte de vocês por favor.
Nós precisamos criar uma coluna que traga os valores defasados de 1 mês. A estrutura da tabela hoje é mais ou menos essa aqui.
PS: Em concatenar, estão os valores das chaves que devem ser consideradas para trazer o valor de 1 mês atrás.
Como os anos se repetem, eu pensei em primeiro criar uma coluna concatenando os valores de ano e mês
mod$anomes<- paste0(mod$ANO,mod$MES) |> as.numeric()
E além disso, apenas como suporte se fosse necessário, também criei uma coluna de data, mas na granularidade mensal, ou seja, eu tenho apenas o primeiro dia do mês para qualquer valor na coluna concatenar.
mod$data<- paste0(mod$ANO,"-",mod$MES,"-01") |> as.Date()
Depois disso, eu pensei em criar um agrupamento por data para gerar a coluna que chamei de v1
mod |>
group_by(data) |>
mutate(v1 = dplyr::lag(v, n = 1))
para trazer os valores defasados com a função lag.
Mas o resultado que eu consegui, gerou a defasagem para linha de cima e não para o mês anterior e até aqui, eu não consegui realizar essa operação considerando a chave em concatenar e o lag de 1 mês.
Então na futura coluna v1, eu preciso colocar o valor de v no mês passado para aquela chave.
Esse é meu primeiro post aqui, peço desculpas caso não tenha seguido o padrão de postagens e prometo continuar aprendendo.
Alguém consegue por favor me ajudar com essa questão? Ao meu ver é um lag com critérios, mas em outra coluna (coluna chave), então a lógica seria. Quando a chave for essa, qual foi o valor de v no mês passado? E esse valor é inserido em v1 para das as observações da base.