2011-05-18 2 views
0

У меня есть dataframe, как переменная k. Столбец all_possible_names содержит больше идентификаторов для кода ILMN. Теперь я хочу искать в столбце all_possible_names для идентификаторов, доступных в идентификаторе dataframe.R: сопоставить данные и фильтровать их

z <- matrix(c(0,0,1,1,0,0,1,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0,0,"RND1 | AB849382 | uc001aeu.1","WDR | AB361738 | uc001aif.1", "PLAC8 | AB271612 | uc001amd.1","TYBSA | AB859482","GRA | AB758392 | uc001aph.1","TAF | AB142353"), nrow=6, 
dimnames=list(c("ILMN_1651838","ILMN_1652371","ILMN_1652464","ILMN_1652952","ILMN_1653026","ILMN_1653103"),c("A","B","C","D","all_possible_names"))) 
k<-as.data.frame(z) 

search<-c("AB361738","RND1", "LIS") 
identifier <- as.data.frame(search) 

Результат должен быть таким:

search Names 
1 AB361738 WDR | AB361738 | uc001aif.1 
2  RND1 RND1 | AB849382 | uc001aeu.1 
3  LIS NA 

После создания этого dataframe, конечный результат может быть создан. имена столбцов должны содержать только имена, начинающиеся с uc0.

Окончательный результат, чем будет:

search Names 
1 AB361738 uc001aif.1 
2  RND1 uc001aeu.1 
3  LIS NA 

Может кто-нибудь помочь мне с этим?

Большое спасибо, Lisanne

ответ

1

Вероятно, не самый лучший путь, но путь:

firstStep<-lapply(srch, grep, k$all_possible_names, fixed=TRUE, value=TRUE) 
res<-lapply(firstStep, function(subres){ 
     prts<-unlist(strsplit(subres, " | ", fixed=TRUE)) 
     prts[which(substr(prts, 1, 3)=="uc0")] 
    }) 

Это возвращает результат в виде списка, потому что вы не можете быть уверены в том, что есть только один результат за строку поиска.

+0

Спасибо! Это подходит для меня. – Lisann

Смежные вопросы