假设这是我的示例数据:
gene_data=data.frame(gene=c("g1","g2","g3","g4"),
sample1=c(12,25,73,84),
sample2=c(54,65,89,97),
sample3=c(45,25,6,8),
sample4=c(23,23,45,6))
我想得到每个基因的中位数表达,当我尝试这个时它不起作用。
gene_data %>% group_by(gene) %>% summarise(medians=median(.))
因为它警告我关于非数字列,这是第一个“基因”列...
但是,这个效果很好:
gene_data %>% group_by(gene) %>% summarise(medians=median(sample1:sample4))
这个创建一个这样的输出,这是我想要的:(这个表错了,要小心,所以这不是我想要的)
# A tibble: 4 × 2
gene medians
<fctr> <dbl>
1 g1 17.5
2 g2 24.0
3 g3 59.0
4 g4 45.0
但是我需要一个通用的解决方案,我现在需要summarise_each,它将中位数应用于所有基因,这是错误的。
我不一定知道样本的名称,所以我想在开头和结尾都不知道样本名称的情况下得到中值表达式。
例如,
gene_data %>% group_by(gene) %>% summarise(medians=median([the numeric columns, or column that contain something]))
也许这太容易了,但我找不到Dplyr。谢谢你的帮助。
答案 0 :(得分:0)
我们可以使用do
library(dplyr)
gene_data %>%
group_by(gene) %>%
do(data.frame(medians = median(unlist(.[-1]))))