繁体   English   中英

dplyr基于分组变量的行中值

[英]dplyr medians of rows based on grouping variable

假设这是我的示例数据:

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。 谢谢你的帮助。

我们可以用do

library(dplyr)
gene_data %>%
   group_by(gene) %>% 
   do(data.frame(medians = median(unlist(.[-1]))))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM