Как получить среднее значение для каждой копии для каждого гена?
Я новичок в R и кодировании, и это может быть очень очевидным ответом!
У меня есть набор данных со значениями log2 для четырех повторностей дафний для тысяч генных зондов, соответствующих различным генам (как показано на рисунке). Однако для каждой реплики я хочу получить среднюю экспрессию для каждого гена. Есть ли способ, которым я могу сделать это?
Вот вершина моего фрейма данных:
s_MC13_B1_Cd.Ni s_MC13_B2_Cd.Ni s_MC13_B3_Cd.Ni s_MC13_B4_Cd.Ni
[1,] "3.32737034165695" "3.30082063716602" "3.35288781669471"
"3.28130201442409"
[2,] "2.99677521546021" "2.97525202994054" "3.01357652548303"
"2.98091704146676"
[3,] "3.22057255739705" "3.24001410852619" "3.19806113996704"
"3.17850023932788"
[4,] "3.17934205285383" "3.22237873890637" "3.20299332433795"
"3.19533925098426"
[5,] "3.20285957796094" "3.22659173854477" "3.22878128735342"
"3.21307289097597"
[6,] "3.16945922109561" "3.1672329312015" "3.17366131274743"
"3.18792397254863"
[1,] "GENE:JGI_V11_100009"
[2,] "GENE:JGI_V11_100009"
[3,] "GENE:JGI_V11_100036"
[4,] "GENE:JGI_V11_100036"
[5,] "GENE:JGI_V11_100036"
[6,] "GENE:JGI_V11_100044"
В основном я хочу получить среднее значение каждого столбца для каждого гена (столбец 5) - например, я хочу получить среднее значение первых 2 строк (GENE:JGI_V11_100009) для каждого столбца, и сделать это для каждого гена в столбце 5
1 ответ
Я думаю, что понимаю, что вы пытаетесь сделать, но с правильными данными я был бы более уверен.
с помощью dplyr
пакет:
Мы можем переименовать столбец V5 в Gene, чтобы немного очистить данные.
Затем мы хотим изменить все столбцы, начинающиеся с "s_MC13", на числовые. Похоже, что они в настоящее время строки символов.
Наконец мы group_by
ген и summarise_at
что толкает mean
работать по всем столбцам, чтобы получить среднее значение для каждого столбца.
library(dplyr)
data_averages <- data %>%
rename(Gene = V5) %>%
mutate_at(vars(starts_with("s_MC13")), funs(as.numeric)) %>%
group_by(Gene) %>%
summarise_at(vars(starts_with("s_MC13")), funs(mean))