Как сохранить другие столбцы при использовании агрегата в R? - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть фрейм данных p4p5, который содержит следующие столбцы:

p4p5 <- c("SampleID", "expr", "Gene", "Period", "Consequence", "isPTV")

Я использовал здесь функцию aggregate, чтобы найти медианное выражение для каждого гена:

p4p5_med <- aggregate(expr ~ Gene, p4p5, median)

Однако это приводит к кадру данных только со столбцами "expr" и "Gene".Как я могу сохранить все исходные столбцы при применении агрегатной функции?

ОБНОВЛЕНИЕ:

Ввод (p4p5):

SampleID   expr  Gene        Period  Consequence            isPTV
HSB430    -1.23  ENSG000098  4       upstream_gene_variant  0
HSB321    -0.02  ENSG000098  5       stop_gained            1
HSB296     3.12  ENSG000027  4       upstream_gene_variant  0
HSB201     1.22  ENSG000027  4       intron_variant         0
HSB220     0.13  ENSG000013  6       intron_variant         0

Ожидаемый результат:

SampleID   expr  Gene        Period  Consequence           isPTV  Median
HSB430    -1.23  ENSG000098  4       upstream_gene_variant  0    -0.625 
HSB321    -0.02  ENSG000098  5       stop_gained            1    -0.625
HSB296     3.12  ENSG000027  4       upstream_gene_variant  0     2.17
HSB201     1.22  ENSG000027  4       intron_variant         0     2.17
HSB220     0.13  ENSG000013  6       intron_variant         0     0.13

1 Ответ

0 голосов
/ 28 ноября 2018

Я бы использовал dplyr для этого:

library(dplyr)

p4p5 %>% 
  group_by(Gene) %>% 
  mutate(Median = median(expr, na.rm = TRUE)) %>%
  ungroup()

  SampleID  expr Gene       Period Consequence           isPTV Median
  <chr>    <dbl> <chr>       <int> <chr>                 <int>  <dbl>
1 HSB430   -1.23 ENSG000098      4 upstream_gene_variant     0 -0.625
2 HSB321   -0.02 ENSG000098      5 stop_gained               1 -0.625
3 HSB296    3.12 ENSG000027      4 upstream_gene_variant     0  2.17 
4 HSB201    1.22 ENSG000027      4 intron_variant            0  2.17 
5 HSB220    0.13 ENSG000013      6 intron_variant            0  0.13
...