Ho ancora qualche problema a comprendere la notazione data.table. Qualcuno potrebbe spiegare perché il seguente non funziona?Utilizzare "by-argument" in "outer" data.table per filtrare "inner" data.table
Sto cercando di classificare le date in gruppi utilizzando cut
. Le interruzioni utilizzati possono essere trovati in un altro data.table e dipendono dal by
tesi dei "dati" esterni data.table
data <- data.table(A = c(1, 1, 1, 2, 2, 2),
DATE = as.POSIXct(c("01-01-2012", "30-05-2015", "01-01-2020", "30-06-2012", "30-06-2013", "01-01-1999"), format = "%d-%m-%Y"))
breaks <- data.table(B = c(1, 1, 2, 2),
BREAKPOINT = as.POSIXct(c("01-01-2015", "01-01-2016", "30-06-2012", "30-06-2013"), format = "%d-%m-%Y"))
data[, bucket := cut(DATE, breaks[B == A, BREAKPOINT], ordered_result = T), by = A]
posso ottenere il risultato desiderato fare
# expected
data[A == 1, bucket := cut(DATE, breaks[B == 1, BREAKPOINT], ordered_result = T)]
data[A == 2, bucket := cut(DATE, breaks[B == 2, BREAKPOINT], ordered_result = T)]
data
# A DATE bucket
# 1: 1 2012-01-01 NA
# 2: 1 2015-05-30 2015-01-01
# 3: 1 2020-01-01 NA
# 4: 2 2012-06-30 2012-06-30
# 5: 2 2013-06-30 NA
# 6: 2 1999-01-01 NA
Grazie, Michael
Penso che sia legato alla [# 967] (https://github.com/Rdatatable/data.table/issues/967). – Arun