Ich habe immer noch einige Probleme, die Data.table Notation zu verstehen. Kann jemand erklären, warum das Folgende nicht funktioniert?Verwenden von "by-Argument" in "äußeren" data.table zum Filtern "inneren" data.table
Ich versuche Daten in Gruppen unter Verwendung zu klassifizieren. Die Pausen verwendet wird, kann in einem anderen data.table und hängen von der by
Argument der äußeren „Daten“ 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]
ich das gewünschte Ergebnis kann tun
# 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
Dank finden, Michael
Ich denke, es im Zusammenhang mit [# 967] (https://github.com/Rdatatable/data.table/issues/967). – Arun