我有以下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