【问题标题】:Average Row Duplicates平均行重复
【发布时间】:2018-09-20 08:44:34
【问题描述】:

我有一个具有重复行名但值不同的数据集,我需要对它们进行平均但无法做到。 我的表类似于以下

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

我需要获取与“基因”列中重复行相对应的所有第 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)

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

【问题讨论】:

  • 您知道这段代码显然来自使用data.table 包的源吗?如果是这样,您应该包含 library(data.table) 和创建该数据对象的代码。
  • 检查您的keys 是否包含预期的列(基因?),如果没有,请以不同的方式构建它。
  • 如果您可以将此作为可重现的示例(例如,我们不必创建您的数据结构)并提供您的代码生成的示例以及理想情况下的示例,将会很有帮助喜欢看作为输出。谢谢:)

标签: r duplicates


【解决方案1】:

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

数据表方式

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

基础R

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    相关资源
    最近更新 更多