平均行重复

时间:2018-04-10 16:22:57

标签: r duplicates

我有一个数据集,其中包含重复的行名但不同的值,我需要对它们进行平均但是无法进行平均。 我的表格如下:

Genes S1 S2 S3 S4 S5 S6
EST01 0  1  5  7  0  0
EST01 1  1  0  9  2  0
EST05 8  0  1  0  1  3
EST70 4  3  0  0  0  0
EST05 5  1  3  6  0  3
EST11 6  8  0  2  0  3
EST01 4  0  2  4  5  1

我需要获得与Genes列中重复行相对应的所有第1,2,3,4,5和6列的平均值。

我遵循了StackOverflow的代码:

head(Gene_IDs)
keys <- colnames(Gene_IDs)[!grepl('1', colnames(Gene_IDs))]
X <- as.data.table(Gene_IDs)
X[,list(mm= mean(1)),keys]
X[,lapply(.SD,mean),keys] -> agg
head(agg)

但是我的决赛桌仍然包含重复项,我不知道该怎么做。 任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

我认为你很复杂。 您需要做的就是根据组基因获得所有列的平均值。

数据表方式

df[ ,lapply(.SD, mean), by = Genes]

基础R

do.call(rbind,lapply(lapply(split(df,df$Genes),`[`,2:ncol(df)),colMeans))