Il problema principale è descritto nel titolo della domanda. Andando direttamente all'esempio qui sotto.Aggiungi colonna per riferimento su rolling join
ho due set di dati:
library(data.table)
dt1 <- data.table(date = as.Date("2015-06-28")+c(0L,3L,5L,7L),
key="date")
dt2 <- data.table(date = as.Date("2015-06-30")+c(0:1,4L),
val = letters[7:9],
dummy = rep(NA,3),
key="date")
voglio avere val
colonna dalla dt2
aggiunti dt1
utilizzando rotolamento aderire.
La seguente dichiarazione produrrà un output simile a quello atteso:
dt2[dt1, roll=TRUE]
# date val dummy
# 1: 2015-06-28 NA NA
# 2: 2015-07-01 h NA
# 3: 2015-07-03 h NA
# 4: 2015-07-05 i NA
Ci sono due problemi con questa affermazione:
1. non volevo avere dummy
colonna
2. io voglio fare questo per riferimento:
address(dt1)
# [1] "0x3b57540"
address(dt2[dt1, roll=TRUE])
# [1] "0x3b4e1f0"
Quindi, sto cercando di laminazione join e aggiungere colonna di riferimento per il mio dt1
e dt2
, risultati attesi:
# date val
# 1: 2015-06-28 NA
# 2: 2015-07-01 h
# 3: 2015-07-03 h
# 4: 2015-07-05 i
E naturalmente address(dt1)
deve corrispondere al address
del magia dichiarazione.
sorpreso che 'dt1 [dt2, val: = i.val, rotolo = -Inf]' non funziona (e non l'aggiunta, ad esempio, 'mult = "all"' o 'allow.cartesian = T'). .. sembra un FR. – MichaelChirico
Stai cercando 'dt1 [, val: = dt2 [dt1, roll = TRUE] $ val]'? (Questo argomento è stato menzionato da Arun nel thread Github su questo argomento.) – Frank