Обработка данных в r

Я пытаюсь разбить свои данные на новые фреймы данных, чтобы выполнить анализ.

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

Я специально хотел бы разбить данные по типу в отдельные таблицы (т.е. одну для белков и одну для мРНК). Затем я хотел бы включить экспрессию белка (или мРНК) всех образцов в единый фрейм данных.

Мы будем очень благодарны за любую помощь или направление к дальнейшим ресурсам! Спасибо

Пример кода

sample1 <- data.frame(type = c("protein", "mRNA"),
                      name = c("DIABLO", "X1345"),
                      expression = c("1.23", "4.265"))

sample2 <- data.frame(type = c("protein", "mRNA"),
                      name = c("DIABLO", "X1345"),
                      expression = c("3.24", "5.33"))

sample3 <- data.frame(type = c("protein", "mRNA"),
                      name = c("DIABLO", "X1345"),
                      expression = c("2.56", "8.11"))

person serfsrg    schedule 16.04.2021    source источник
comment
Привет, в твоем посте много вопросов. Я считаю, что первый шаг, который вы ищете, это samples<-rbind(sample1, sample2, sample3)   -  person M.Viking    schedule 16.04.2021


Ответы (2)


Объедините все данные в один фрейм данных и разделите на type столбец, чтобы получить два отдельных фрейма данных.

library(dplyr)

bind_rows(mget(paste0('sample', 1:3)), .id = 'sample') %>%
  split(.$type) %>%
  list2env(.GlobalEnv)

mRNA

#   sample type  name expression
#2 sample1 mRNA X1345      4.265
#4 sample2 mRNA X1345       5.33
#6 sample3 mRNA X1345       8.11

protein
#   sample    type   name expression
#1 sample1 protein DIABLO       1.23
#3 sample2 protein DIABLO       3.24
#5 sample3 protein DIABLO       2.56

Хотя вам это может не понадобиться, но я добавил дополнительный столбец (sample), чтобы определить, из какого фрейма данных берется каждая строка.

person Ronak Shah    schedule 16.04.2021
comment
сказочный подход. - person AnilGoyal; 16.04.2021

Сначала прочтите все файлы данных в list, а затем извлеките части:

samples <- list(sample1, sample2, sample3)
# Alternate approach
# samples <- lapply(paste0("sample", 1:3), get)
proteins <- do.call(rbind, lapply(samples, function(x) x[1, ]))
proteins
#      type   name expression
# 1 protein DIABLO       1.23
# 2 protein DIABLO       3.24
# 3 protein DIABLO       2.56
mRNAs <- do.call(rbind, lapply(samples, function(x) x[2, ]))
mRNAs
#    type  name expression
# 2  mRNA X1345      4.265
# 21 mRNA X1345       5.33
# 22 mRNA X1345       8.11
person dcarlson    schedule 16.04.2021