次のようなテーブルに data.table パッケージを使用しています。
DT <- data.table(id=rep(1:100, each=50),
grp=rep(letters[1:4], each=1250),
time=rep(1:50,100),
outcome=rnorm(5000),
seconds=rep(1:500,10),
weights=rnorm(5000),
response=rep(1:200, each=25),
key=c("grp", "time"))
このテーブルからいくつかの要約統計の新しい (おそらく rbindlisted) データ テーブルを作成したいと思います。最初に 2 つの中間テーブル a と b を作成しました。
a <- DT[, list(mean = weighted.mean(outcome, weights),
median=median(outcome),seconds), by=c("grp","time")]
b <- DT[, list(mean=weighted.mean(response, seconds),
median=median(response)), by=c("grp","time")]
次に、これらをすべてのグループで行バインドしようとしていますが、行に沿ったグループ化は保持されています。これは動作しません:
DTfinal <- data.table(DT$grp, DT$time,
outcomemean=a$mean, responsemean=b$mean,
outcomemedian=a$median, responsemedian=b$median)
a と b の長さが異なるため、マージは機能しないと思います。行バインド a と b は、a と b の異なる平均値と中央値も混同します。理想的には、c(".a",".b") のような各列に何らかのサフィックスを持つ rbindlist が必要です。
更新:エラーが発生します(aとbの次元が異なるため)
DTfinal <- rbindlist(setNames(list(a[, c("grp", "time", "mean", "median"),
with = FALSE],
b[, c("grp", "time", "mean", "median"),
with = FALSE]),
c("a", "b")),
idcol= "id")
dcast(DTfinal, grp + time ~id, value.var = c('mean', 'median'))
戻る場所
Aggregate function missing, defaulting to 'length'