Como melhor unir uma coluna de um data.table com outra coluna do mesmo data.table?

Meus dados

Eu tenho um data.tableDT com a corrente (F0YR) e o seguinte (F1YR) final do ano fiscal (FYE) codificado como inteiros. Como cada próximo FYE eventualmente se tornará um FYE atual, o inteiro será ambos na colunaF1YR eF0YR. Além disso, meus dados contêm observações mensais para que o mesmo FYE esteja no conjunto de dados várias vezes:

library(data.table)
DT <- data.table(ID     = rep(c("A", "B"), each=9),
                 MONTH  = rep(100L:108L, times=2),
                 F0YR   = rep(c(1L, 4L, 7L), each=3, times=2),
                 F1YR   = rep(c(4L, 7L, 9L), each=3, times=2),
                 value  = c(rep(1:5, each=3), 6, 6, 7),
                 key    = "ID,F0YR")
DT
      ID MONTH F0YR F1YR value
 [1,]  A   100    1    4     1
 [2,]  A   101    1    4     1
 [3,]  A   102    1    4     1
 [4,]  A   103    4    7     2
 [5,]  A   104    4    7     2
 [6,]  A   105    4    7     2
 [7,]  A   106    7    9     3
 [8,]  A   107    7    9     3
 [9,]  A   108    7    9     3
[10,]  B   100    1    4     4
[11,]  B   101    1    4     4
...
O que eu quero fazer

Para cadaID eF1YR combinação, eu quero obter o valor para oID eF0YR combinação. Por exemplo: a empresa A tinha um valor de2 paraFOYR==4. Agora, eu quero uma coluna adicional para todas as combinações comID=="A" eF1YR==4 que é definido como 2, ao lado do valor já existente de 1.

O que eu tentei
intDT <- DT[CJ(unique(ID), unique(F0YR)), list(ID, F0YR, valueNew = value), mult="last"]
setkey(intDT, ID, F0YR)
setkey(DT, ID, F1YR)
DT <- intDT[DT]
setnames(DT, c("F0YR.1", "F0YR"), c("F0YR", "F1YR"))
DT
      ID F1YR valueNew MONTH F0YR value
 [1,]  A    4        2   100    1     1
 [2,]  A    4        2   101    1     1
 [3,]  A    4        2   102    1     1
 [4,]  A    7        3   103    4     2
 [5,]  A    7        3   104    4     2
 [6,]  A    7        3   105    4     2
 [7,]  A    9       NA   106    7     3
 [8,]  A    9       NA   107    7     3
 [9,]  A    9       NA   108    7     3
[10,]  B    4        5   100    1     4
[11,]  B    4        5   101    1     4
...

(Note que eu usomult="last" aqui porque, embora os valores só devam mudar com F0YR ou F1YR, algumas vezes eles não mudam e este é apenas o meu desempatador).

O que eu quero

Isso parece improvável. Primeiro de tudo, eu tenho que fazer uma cópia do meu DT. Em segundo lugar, desde que eu juntei basicamente o mesmodata.table, todos os nomes das colunas têm o mesmo nome e eu tenho que renomeá-los. Eu pensei que umself join seria o caminho a seguir, mas eu tentei e tentei e não consegui uma boa solução. Eu tenho a esperança de que há algo fácil lá fora que eu simplesmente não vejo ... Alguém tem uma pista? Ou os meus dados estão configurados de tal forma que é realmente difícil (talvez porque eu tenha observações mensais, mas queira juntar apenas valores variáveis ​​trimestrais ou anuais).

questionAnswers(1)

yourAnswerToTheQuestion