R: criar uma nova coluna com base em várias condições de duas colunas com datas

votos
1

Eu tenho uma estrutura de dados que se parece com isso (exemplo short):

df

date1        date2        Value
01-01-2016   01-01-2016   100
01-02-2016   01-01-2016   90
01-03-2016   01-01-2016   110
01-02-2016   01-02-2016   180
01-03-2016   01-02-2016   80
01-04-2016   01-02-2016   100
01-05-2016   01-02-2016   70
01-03-2016   01-03-2016   90
01-04-2016   01-03-2016   100
01-05-2016   01-03-2016   80

Eu quero criar uma nova coluna com base nos seguintes critérios: se date1 = date2 eu preciso colocar na nova coluna Value_new o valor da coluna Valor da linha, onde date1 = date2 - um mês. No caso que agora existe valor para date1 = date2 - um mês, o novo valor deve ser igual a 0.

Saída deve ser assim:

date1        date2        Value  Value_new
01-01-2016   01-01-2016   100    0
01-02-2016   01-01-2016   90     0
01-03-2016   01-01-2016   110    0
01-02-2016   01-02-2016   180    90
01-03-2016   01-02-2016   80     0
01-04-2016   01-02-2016   100    0
01-05-2016   01-02-2016   70     0
01-03-2016   01-03-2016   90     80
01-04-2016   01-03-2016   100    0
01-05-2016   01-03-2016   80     0

Tentei resolver isso usando o próximo código, mas ele não funciona corretamente:

df$Value_new <- 0
df$Value_new[df$date1==df$date2] <- df$Value[(df$date1 == (df$date2 - months(1))]

Eu sou novo em programação R e ficaria grato por todas as sugestões.

Bloco de citação

Publicado 19/03/2020 em 21:54
fonte usuário
Em outras línguas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more