我有一个data.table
有422列,我需要计算跨行的平均值,但是这些列需要按照某个不相等的顺序进行分组。以下示例数据:
library(data.table)
m <- data.table(ID = LETTERS, GENE = paste("gene", 1:26, sep = ""), SAMPLE = paste(1, "A", sep = ""), REGION = "UNITED_STATES")
for (x in 1:418) set(m, i = NULL, j = paste("RUN", x, sep = ""), value = rnorm(nrow(m)))
需要按以下顺序对列进行分组:
breaks <- c(25, 25, 25, 20, 40, 40, 40, 32, 25, 25, 25, 20, 20, 20, 20, 16)
所以决赛桌将是data.table
,前四个&#39;信息&#39;列后跟16列,每列具有上述中断的平均值。新表的16列是列的平均值(来自原始数据)1-25,26-50,51-75,76-95等。我知道如何计算所有列的行均值,我认为有一些方法可以用.SDcols
做到这一点,但我不认为你可以像我想要的那样组织小组。
m[,.(Mean = rowMeans(.SD)), keyby = .(ID, GENE, SAMPLE, REGION)]
我也准备根据提议的方法,1:25,26:50等方式手工制作这些休息点,但在R中这样做会很好。