【发布时间】:2017-09-28 13:36:15
【问题描述】:
我有一个包含约 30,000 行和约 17,000 列的庞大数据集,以及一个包含 character 元素的向量。
这是一个重新创建我的数据集的虚拟集
### Example
df <- data.frame(Gene=paste0("gene", 1:60), replicate(60, runif(60, min=0, max=100)))
colnames(df) <- c("GeneName", paste0("TisA.", 1:20), paste0("TisB.", 1:20), paste0("TisC.", 1:20))
genes <- sample(df$GeneName, 5)
head(df)
# GeneName TisA.1 TisA.2 TisA.3 TisA.4
#1 gene1 1.987621 17.936562 18.145417 59.43023
#2 gene2 60.031713 73.822846 93.946769 72.27633
#3 gene3 44.833748 47.890719 77.100497 39.45719
#4 gene4 44.662776 26.285659 30.087606 49.50682
#5 gene5 63.770411 6.469006 3.797708 68.17532
我需要为数据框匹配向量中的元素,这很容易完成
df.new <- df[df$GeneName %in% genes,]
然后,我想要的是,对于每个genes,为每个基因创建等级值,然后将等级与Tis (A, B, C) 相加
例如,我可以使用 gene 对值进行排序
genes.ord <- sort(df.new[1,], decreasing = TRUE)
但是,我被困在这里,这将是为基因分配等级并按组求和这些等级的最快方法,即TisA、TisB 和TisC?
为澄清起见,每组有 20 个样本TisA.1, TisA.2, ..., TisA.20
期望的输出是:
GeneName TisA TisB TisC
gene4 24 32 10 ## these are random values to show sum of ranks for each of genes in the vector
gene1 14 12 20 ## these are random values to show sum of ranks for each of genes in the vector
gene40 4 92 12 ## these are random values to show sum of ranks for each of genes in the vector
gene2 64 2 40 ## these are random values to show sum of ranks for each of genes in the vector
gene15 84 32 9 ## these are random values to show sum of ranks for each of genes in the vector
P.S 我的真实数据集中的一些值可以是 0 并且在不同的列中重复
【问题讨论】:
-
你在说什么类型的“组”?你的基因被标记为 1-60,你有 60 行。
-
“组”将是“TisA”、“TisB”或“TisC”,每个都有 20 个元素,例如"TisA.1", "TissA.2",...TisA.20"