我有一个数据集,其中包含重复的行名但不同的值,我需要对它们进行平均但是无法进行平均。 我的表格如下:
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)
但是我的决赛桌仍然包含重复项,我不知道该怎么做。 任何帮助表示赞赏。谢谢!
答案 0 :(得分:0)
我认为你很复杂。 您需要做的就是根据组基因获得所有列的平均值。
数据表方式
df[ ,lapply(.SD, mean), by = Genes]
基础R
do.call(rbind,lapply(lapply(split(df,df$Genes),`[`,2:ncol(df)),colMeans))