如何根据 Python、R 中不同数据框/患者之间的第一列元素/基因取第二列值/计数的平均值?
Posted
技术标签:
【中文标题】如何根据 Python、R 中不同数据框/患者之间的第一列元素/基因取第二列值/计数的平均值?【英文标题】:How to take average of 2nd column values/counts based on first column elements/genes between different dataframes/patients in Python, R? 【发布时间】:2020-04-06 02:21:31 【问题描述】:输入数据帧:
df1:
df2:
输出应该是一个数据框,其中包含 df1 和 df2 中所有可能的基因的平均值。如果 df1 有一个不在 df2 中的元素,则将该元素在 df2 中计数为零。结果数据框应该是这样的。 结果数据框:
3:
【问题讨论】:
【参考方案1】:R
中的一个选项是在使用complete
扩展两个数据集后将两个数据集绑定在一起,按“基因”分组,summarise
“计数”列的mean
library(dplyr)
library(tidyr)
out <- bind_rows(df1, df2, .id = 'grp') %>%
complete(grp, Genes, fill = list(Count = 0)) %>%
group_by(Genes) %>%
summarise(Average = mean(Count))
# A tibble: 5 x 2
# Genes Average
# <chr> <dbl>
#1 A 9
#2 B 7
#3 C 11
#4 D 13
#5 E 5
数据
df1 <- structure(list(Genes = c("A", "B", "C", "D"), Count = c(10, 14,
4, 20)), class = "data.frame", row.names = c(NA, -4L))
df2 <- structure(list(Genes = c("A", "C", "D", "E"), Count = c(8, 18,
6, 10)), class = "data.frame", row.names = c(NA, -4L))
【讨论】:
非常感谢您的帮助。但是 B 值应该是 7 而 E 值应该是 5 而不是 14 和 10。 @JaleesUrRahman forGene
A,您的平均值显示为 14,但两个数据集中的值都是 8 和 10。虽然不清楚。 'D' 中也有同样的问题(20、6 -> 平均 13)
是的,我犯了这个错误。你的答案正是我想要的。谢谢!如何存储结果数据框?以上是关于如何根据 Python、R 中不同数据框/患者之间的第一列元素/基因取第二列值/计数的平均值?的主要内容,如果未能解决你的问题,请参考以下文章