[英]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.