2
Ich frage mich, wie Ebenen Werte von Werten in data.table
subtrahieren. Mein MWE ist unten angegeben. Jede Hilfe wird sehr geschätzt. Dankdata.table: Subtrahieren Ebenen bedeutet von Werten
set.seed(12345)
A <- rep(x=paste0("A", 1:2), each=6)
B <- rep(x=paste0("B", 1:3), each=2, times=2)
Rep <- rep(x=1:2, times=3)
Y <- rnorm(n=12, mean = 50, sd = 5)
library(data.table)
dt <- data.table(A, B, Rep, Y)
dt[, j=mean(Y), by=.(A, B)]
dt[, j=mean(Y), by=.(A)]
dt[, j=mean(Y), by=.(A, B)] - dt[, j=mean(Y), by=.(A)]
Error in Ops.data.frame(dt[, j = mean(Y), by = .(A, B)], dt[, j = mean(Y), :
‘-’ only defined for equally-sized data frames
Herausgegeben
Eigentlich möchte ich dieses
dt[, j=mean(Y), by=.(A, B)] - dt[, j=mean(Y), by=.(A)] - dt[, j=mean(Y), by=.(B)] + dt[, j=mean(Y)]
Dank @Psidom für deine Antwort. Ich frage mich, wie man komplizierte Berechnungen wie diese durchführt: dt [, j = mean (Y), by =. (A, B)] - dt [, j = mean (Y), by =. (A)] - dt [ , j = Mittelwert (Y), durch = (B)] + dt [, j = Mittelwert (Y)]. Danke – MYaseen208
Ähnlich, wenn Sie alle Operationen zusammenführen, sollten Sie in der Lage sein zu bekommen, was Sie wollen. Wie z. B. 'dt [, j: = Mittel (Y), (A, B)] [, j: = j - Mittel (Y),. (A)] [, j: = j - Mittel (Y), . (B)] [, j: = j + mittel (Y)] '. – Psidom
Hinweis: Das OP verwendet 'j' als benanntes Argument von' [.data.table', aber Sie erstellen tatsächlich eine Spalte mit dem Namen 'j' ... die einige (wie ich) verwirrend finden könnten. – Frank