Chciałbym obliczyć odchylenia od (ważonej) średniej dla wielu zmiennych w data.table
.Jak obliczyć odchylenia od średniej ważonej w data.table?
Weźmy ten przykład zestaw:
mydt <- data.table(
id = c(1, 2, 2, 3, 3, 3),
x = 1:6,
y = 6:1,
w = rep(1:2, 3)
)
mydt
id x y w
1: 1 1 6 1
2: 2 2 5 2
3: 2 3 4 1
4: 3 4 3 2
5: 3 5 2 1
6: 3 6 1 2
mogę obliczyć ważonych środków z x
i y
następująco:
mydt[
,
lapply(
as.list(.SD)[c("x", "y")],
weighted.mean, w = w
),
by = id
]
(używam stosunkowo skomplikowany as.list(.SD)[...]
konstrukt zamiast .SDcols
z powodu błędu this).
Próbowałem najpierw utworzyć środki dla każdego wiersza, ale nie znalazłem sposobu połączenia :=
z.
Możesz po prostu zrobić '. (X, y)' zamiast 'as.list (.SD) [c (" x "," y ")]' .... –
@DavidArenburg Dzięki. Jest to prostsze, ale także traci oryginalne nazwy zmiennych, otrzymujesz 'V1' i' V2' zamiast 'x' i' y'. – janosdivenyi
Następnie '.SD [,. (X, y)]'? –