私はHmiscパッケージの関数smean.cl.normal
を使用しています。平均値と下位および上位CIの3つの値を持つベクトルを返します。 2グループのdata.table
で使用すると、2列6行が得られます。 2つのグループに対応する2つの行と関数の出力、すなわち平均値とCIのそれぞれについて列を分離して結果を得る方法はありますか?data.table:lapply複数列出力を持つ関数
require(Hmisc)
require(data.table)
dt = data.table(x = rnorm(100),
gr = rep(c('A', 'B'), each = 50))
dt[, lapply(.SD, smean.cl.normal), by = gr, .SDcols = "x"]
出力:
gr x
1: A -0.07916335
2: A -0.33656667
3: A 0.17823998
4: B -0.02745333
5: B -0.32950607
6: B 0.27459941
所望の出力:
gr Mean Lower Upper
1: A -0.07916335 -0.33656667 0.17823998
2: B -0.02745333 -0.32950607 0.27459941
おそらくもっと良い方法がありますが、次のように動作します: 'dt2 < - dcast(dt [、lapply(.SD、smean.cl.normal)、by = gr]、gr〜rowid(gr)); setnames(dt2,2,4、c( 'Mean'、 'Lower'、 'Upper')) ' – Jaap
ありがとうございました。はい、私はキャストでそれをやっただけで、私は欠落している 'data.table'に何かがあると思っていました。 – mattek
は、http://stackoverflow.com/questions/27494813/data-table-computing-several-column-at-once –