Как получить среднее значение для каждого столбца для каждого гена в R?

Я работаю с фреймом данных в R, начиная следующим образом:

   > head(renamed.Mc.Cd.Ni[2:6])
   s_MC13_B2_Cd.Ni s_MC13_B3_Cd.Ni s_MC13_B4_Cd.Ni     GENE_ID
   9.854759       10.216916        9.722329     GENE:JGI_V11_100009        
   7.863938        8.075640        7.894878     GENE:JGI_V11_100009
   9.448034        9.177245        9.053654     GENE:JGI_V11_100036
   9.333245        9.208673        9.159947     GENE:JGI_V11_100036
   9.360540        9.374757        9.273236     GENE:JGI_V11_100036
   8.983222        9.023339        9.112987     GENE:JGI_V11_100044

Как вы можете видеть, у меня есть три столбца, которые дают значение экспрессии гена для 3 разных дафний во время лечения. Последний столбец представляет экспрессируемый ген. Тем не менее, существует более одной строки для каждого гена из-за использования нескольких зондов. Как получить среднее значение для каждого гена для каждой дафнии (столбцы 1-3)?

Например, для каждой из трех дафний (столбцы с 1 по 3) я хочу получить общую среднюю экспрессию гена для каждого гена, показанного в столбце 4. Я не могу сделать это вручную, поскольку у меня более 60000 значений экспрессии генного зонда.

Заранее спасибо!

1 ответ

Решение

Похоже, ваш вопрос прост в понимании групповой проблемы, на SO уже есть несколько примеров... так что это дубликат, но это аккуратный подход к решению вашей проблемы.

library(dplyr)

df <- read.table(text = "
s_MC13_B2_Cd.Ni s_MC13_B3_Cd.Ni s_MC13_B4_Cd.Ni     GENE_ID
9.854759       10.216916        9.722329     GENE:JGI_V11_100009
7.863938        8.075640        7.894878     GENE:JGI_V11_100009
9.448034        9.177245        9.053654     GENE:JGI_V11_100036
9.333245        9.208673        9.159947     GENE:JGI_V11_100036
9.360540        9.374757        9.273236     GENE:JGI_V11_100036
8.983222        9.023339        9.112987     GENE:JGI_V11_100044
", header = TRUE, stringsAsFactors = FALSE)

df %>%
  group_by(GENE_ID) %>%
  summarise_if(is.numeric, mean)

# # A tibble: 3 x 4
#   GENE_ID             s_MC13_B2_Cd.Ni s_MC13_B3_Cd.Ni s_MC13_B4_Cd.Ni
#   <chr>                         <dbl>           <dbl>           <dbl>
# 1 GENE:JGI_V11_100009            8.86            9.15            8.81
# 2 GENE:JGI_V11_100036            9.38            9.25            9.16
# 3 GENE:JGI_V11_100044            8.98            9.02            9.11
Другие вопросы по тегам