5
data.table
の多くの変数の(重み付けされた)平均からの偏差を計算したいと考えています。data.tableの加重平均からの偏差を計算するには?
のは、この例のセットみましょう。次のように私はx
とy
の加重平均を計算することができ
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
を:
mydt[
,
lapply(
as.list(.SD)[c("x", "y")],
weighted.mean, w = w
),
by = id
]
(私が代わりに.SDcols
の比較的複雑as.list(.SD)[...]
構文を使用しますthisバグのため)
各行の手段を最初に作成しようとしましたが、:=
とlapply()
を組み合わせる方法が見つかりませんでした。
as.list(.SD)[c( "x"、 "y")] '....の代わりに'。(x、y) 'を実行するだけでよいのですが... –
@DavidArenburgありがとう。確かに単純ですが、元の変数名も失われていると、 'x'と' y'の代わりに 'V1'と' V2'が得られます。 – janosdivenyi
'.SD [、。(x、y)]'? –