我有以下data.table
保險絲熔化/ dcast
library(data.table)
testdt <- data.table(var1=rep(c("a", "b"), e=3), p1=1:6, p2=11:16)
# var1 p1 p2
#1: a 1 11
#2: a 2 12
#3: a 3 13
#4: b 4 14
#5: b 5 15
#6: b 6 16
我需要有各var1
的每個p*
中值,所述p*
應當以行和在var1
的不同的唯一值列。
所以,我在尋找這樣的輸出:
variable a b
1 p1 2 5
2 p2 12 15
我發現得到它最簡單的方法是:
dcast(melt(testdt, id.vars = "var1", measure.vars = c("p1", "p2")),
variable ~ var1,
value.var = "value",
fun.aggregate = median)
但我有一種感覺,我在這裏失去了一些東西(如最適合的功能),所以我很想知道直接的方式(獨特的功能)來做同樣的事情。
我是reshape2包可以做的伎倆與recast(testdt, variable~var1, fun=median, id.var="var1")
的認識recast
,但我想,以避免加載另一個包。
編輯:
我在尋找既簡單又有效的解決方案。這將應用在~30列和〜80列的約40個表格上
嘗試'testdt [,lapply(.SD,中位數),VAR1]'但是這是你想要的轉置。 – akrun
謝謝@akrun,已經嘗試過,但我需要「轉置」部分 – Cath
我認爲這是*不*性能相關。那是對的嗎? – A5C1D2H2I1M1N2O1R2T1