簡體   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