2015-08-13 2 views
1

Основываясь на Т-тест на данной экспрессии генов из микрочип (с пакетом ЕМА) и последующей аннотацией я генерируется кадр данных, который выглядит следующим образом:слияние кадр данных с вектором в R

> 

head(rt.annot) 
     affy_hg_u133_plus_2  probeID  Stat RawpValue AdjpValue entrezgene hgnc_symbol ensembl_gene_id 
14744   204103_at 204103_at 11.754856 1.718688e-20 9.396926e-16  6351  CCL4 ENSG00000275302 
721   1553177_at 1553177_at 10.358405 1.810027e-17 4.948161e-13  117157  SH2D1B ENSG00000198574 
16279   205495_s_at 205495_s_at 9.909715 1.721748e-16 3.137886e-12  10578  GNLY ENSG00000115523 
21763   210163_at 210163_at 9.496225 1.374429e-15 1.623589e-11   NA  <NA>   <NA> 
44641   230464_at 230464_at 9.480850 1.484763e-15 1.623589e-11  53637  S1PR5 ENSG00000180739 
18998   207840_at 207840_at 9.383745 2.417818e-15 1.652428e-11  11126  CD160 ENSG00000117281 

с 60376 строк и 8 столбцов.

Я также измерили раза изменение экспрессии генов между 2 группами, этот сгенерированный вектор:

> head(fcOUT) 
1007_s_at 1053_at 117_at 121_at 1255_g_at 1294_at 
0.9436815 1.0098279 1.0230719 0.9826041 0.9917645 1.0906764 

Как объединить фрейм данных (rt.annot) и вектор (fcOUT) (так что вектор выравнивается как столбец матрицы, основанный на первом столбце aafy_hg_u133_plus_2 (таким образом, не как функция cbind))? Я не мог найти ответ в другом месте.

Спасибо!

ответ

0

Извлеките имена из вашего вектора в фрейм данных, а затем соедините этот фрейм данных с вашими основными данными. Простой пример, чтобы сделать это ниже:

v1 <- as.vector(c(1,2,3)) 
names(v1) <- c('a', 'b', 'c') 

df <- data.frame('affy_hg_u133_plus_2' = names(v1), 'values' = v1) 

Тогда вы сможете объединить ФР на свой основной кадр данных по affy_hg_u133_plus_2.

0

Вы попробовали merge?

a <- c("c1", "c2", "c3") 
x <- 1:3 
y <- runif(3) 

foo <- data.frame(a = a, x = x) 
bar <- data.frame(a = a, y = y) 
merge(foo, bar, by = "a") 

Кроме того, пожалуйста, прочитайте this, и сделать ваши примеры минимальными и воспроизводимыми.

0

Либо вы строите dataframe с вашего вектора и присоединиться к ним:

d.fcOUT = data.frame(aafy_hg_u133_plus_2 = names(fcOUT), 
           fcOUT = fcOUT, stringsAsFactors=F) 
library(dplyr) 
left_join(rt.annot, d.fcOUT) 

Или использовать функцию MATCH():

rt.annot$fcOUT = fcOUT[match(rt.annot$aafy_hg_u133_plus_2, names(fcOUT))] 
Смежные вопросы