【发布时间】:2014-03-06 07:04:56
【问题描述】:
我尝试使用data.table 对行进行简单的求和和均值,但我得到了意想不到的结果。我遵循了FAQ manual 的第 2 节中的帮助,用于 data.table。我找到了一种可行的方法,但我不确定为什么常见问题解答第 2 节中的这种方法不可行。 这种方法给了我不正确的结果(即,它给了我第一列的值):
dt[, genesum:=lapply(.SD,sum), by=gene]
head(dt)
gene TCGA_04_1348 TCGA_04_1362 genesum
1: A1BG 0.94565 0.70585 0.94565
2: A1BG-AS 0.97610 1.15850 0.97610
3: A1CF 0.00000 0.02105 0.00000
4: A2BP1 0.00300 0.04150 0.00300
5: A2LD1 4.57975 5.02820 4.57975
6: A2M 60.37320 36.09715 60.37320
这给了我想要的结果
dt[, genesum:=apply(dt[,-1, with=FALSE],1, sum)]
head(dt)
gene TCGA_04_1348 TCGA_04_1362 genesum
1: A1BG 0.94565 0.70585 1.65150
2: A1BG-AS 0.97610 1.15850 2.13460
3: A1CF 0.00000 0.02105 0.02105
4: A2BP1 0.00300 0.04150 0.04450
5: A2LD1 4.57975 5.02820 9.60795
6: A2M 60.37320 36.09715 96.47035
我有更多的列和行,这只是一个子集。这和我设置key的方式有关系吗?
tables()
NAME NROW MB COLS KEY
[1,] dt 20,785 2 gene,TCGA_04_1348_01A,TCGA_04_1362_01A,genesum gene
【问题讨论】:
标签: r data.table mean