Merging the unique values
Afficher commentaires plus anciens
final_result =
'Genes' 'T0&T2' 'T1&T3' 'T2&T4' 'T3&T5' 'T4&T6'
'YAR029W' 'dd' 'uu' 'dd' 'uu' 'du'
'YBL095W' 'du' 'ud' 'ud' 'du' 'du'
'YBL111C' 'uu' 'uu' 'ud' 'ud' 'du'
'YBL113C' 'uu' 'uu' 'uu' 'ud' 'ud'
'YBR096W' 'uu' 'uu' 'ud' 'ud' 'dd'
'YBR138C' 'ud' 'ud' 'ud' 'du' 'du'
In these i have to find the genes having same variable(1st variable in each interval) for all the intervals for example
'YAR029W'has 'd'(1st variable) in interval 'T0&T2' ,in same interval i want to find which genes havibg variable'd',for example
'YBL095W','YBR138C',has value 'd'('d' may be 1sy or 2nd variable )
Same should be done for 2nd gene also in interval 'T0&T2'
'YBL111C' has 1st value 'u',the genes having 'u' must be displayed where , 'YBL113C''YBR096W','YBR138C' must be displayed
So i need output as
'Gene1' 'T0&T2'
'YAR029W' 'dd'
'YBL095W' 'du'
'YBR138C' 'ud'
;
;
'Gene3' 'T0&T2'
'YBL111C' 'uu'
'YBL113C' 'uu'
'YBR096W' 'uu'
'YBR138C' 'ud'
;
;
I have 1000 genes please help
Réponse acceptée
Plus de réponses (3)
Andrei Bobrov
le 23 Juil 2012
Modifié(e) : Andrei Bobrov
le 24 Juil 2012
EDIT
final_result = {...
'Genes' 'T0&T2' 'T1&T3' 'T2&T4' 'T3&T5' 'T4&T6'
'YAR029W' 'dd' 'uu' 'dd' 'uu' 'du'
'YBL095W' 'du' 'ud' 'ud' 'du' 'du'
'YBL111C' 'uu' 'uu' 'ud' 'ud' 'du'
'YBL113C' 'uu' 'uu' 'uu' 'ud' 'ud'
'YBR096W' 'uu' 'uu' 'ud' 'ud' 'dd'
'YBR138C' 'ud' 'ud' 'ud' 'du' 'du' };
fr = final_result(2:end,1:2);
frd = fr(cellfun(@(x)any(ismember(x,'d'),2),fr(:,2)),:);
fru = fr(cellfun(@(x)strcmp(x(1),'u'),fr(:,2)),:);
out = [arrayfun(@(x)frd([1,x:end],:),(2:size(fru,1)-1)','un',0);...
arrayfun(@(x)fru([x:end],:),(1:size(fru,1)-1)','un',0)];
3 commentaires
Pat
le 23 Juil 2012
Jan
le 23 Juil 2012
I do not understand the format of your output. Should "out1", "out2" be separate variables? What are the "; ;" exactly - an [2 x 0] cell string?
Andrei Bobrov
le 24 Juil 2012
Answer was edited.
Azzi Abdelmalek
le 23 Juil 2012
Modifié(e) : Azzi Abdelmalek
le 23 Juil 2012
combining with Andrei answer:
a=final_result;[n,m]=size(a);B=a(2:end,1);
for k=2:m
A=a(2:end,k);
s{1,k-1} = [ [char(a(1,k)) '/gen1']; B(cellfun(@(x)any(regexp(x,'d')),A),:)];
s{2,k-1}= [[char(a(1,k)) '/gen3'] ;B(cellfun(@(x)any(regexp(x,'u[u,d]')),A),:)];
disp(s{1,k-1});disp(s{2,k-1})
end
1 commentaire
Pat
le 24 Juil 2012
per isakson
le 24 Juil 2012
Modifié(e) : per isakson
le 24 Juil 2012
This code
for ii = 2 : 6
out = cell(0,2);
first_character = final_result{ ii, 2 }(1);
for jj = ii : 7
if ismember( first_character, final_result{ jj, 2 } )
out = cat( 1, out, final_result( jj, 1:2 ) );
end
end
out
end
prints
out =
'YAR029W' 'dd'
'YBL095W' 'du'
'YBR138C' 'ud'
out =
'YBL095W' 'du'
'YBR138C' 'ud'
out =
'YBL111C' 'uu'
'YBL113C' 'uu'
'YBR096W' 'uu'
'YBR138C' 'ud'
out =
'YBL113C' 'uu'
'YBR096W' 'uu'
'YBR138C' 'ud'
out =
'YBR096W' 'uu'
'YBR138C' 'ud'
>>
The columns
'T1&T3' 'T2&T4' 'T3&T5' 'T4&T6'
are confusing.
.
You write:
out2(2nd gene)
'YAR029W' 'dd'
'YBR138C' 'ud'
is that in accordance with your requirements?
2 commentaires
Pat
le 24 Juil 2012
per isakson
le 24 Juil 2012
Modifié(e) : per isakson
le 24 Juil 2012
I guessed that regarding the columns, but still not including them here would have made it easier to read the question.
You know, I cannot assign the result to out1, out2, etc. That would have made Jan and Walter very disappointed with me:) See the FAQ.
Catégories
En savoir plus sur Sparse Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!