changing the string "JF 2009" to two seperate strings "J 2009" " F2009" (reposted)
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Dear all I have the following cell matrix
A={
1 'SLO' ' '
1 'SLO' ' '
1 'SLO' 'JF 2009'
1 'SLO' 'MA 2009'
1 'SLO' 'MJ 2009'
1 'SLO' 'JA 2009'
1 'SLO' 'SO 2009'
1 'SLO' 'ND 2009'
1 'SLO' 'JF 2010'
1 'SLO' 'MA 2010'
1 'SLO' 'MJ 2010'
1 'SLO' 'JA 2010'
1 'SLO' 'SO 2010'
1 'SLO' 'ND 2010'
1 'SLO' 'JF 2011'
1 'SLO' 'MA 2011'
1 'SLO' 'MJ 2011'
1 'SLO' 'JA 2011'
2 'SLO' ' '
2 'SLO' ' '
2 'SLO' 'JF 2009'
2 'SLO' 'MA 2009'
2 'SLO' 'MJ 2009'
2 'SLO' 'JA 2009'
2 'SLO' 'SO 2009'
2 'SLO' 'ND 2009'
2 'SLO' 'JF 2010'
2 'SLO' 'MA 2010'
2 'SLO' 'MJ 2010'
2 'SLO' 'JA 2010'
2 'SLO' 'SO 2010'
2 'SLO' 'ND 2010'
2 'SLO' 'JF 2011'
2 'SLO' 'MA 2011'
2 'SLO' 'MJ 2011'
2 'SLO' 'JA 2011'
}
As you can see I have bimontly data. I want to modify the last column so as to have months like
Amodified={
1 'SLO' ' '
1 'SLO' ' '
1 'SLO' 'J 2009'
1 'SLO' 'F 2009'
1 'SLO' 'M 2009'
1 'SLO' 'A 2009'
1 'SLO' 'M 2009'
1 'SLO' 'J 2009'
1 'SLO' 'J 2010' }
and so forth
The previous answers were correct and I thank these guys. Yet their code can be applied for small number of individuals. In my case I have 30000 individuals.
Could you please help me?
thanks
3 comentarios
Azzi Abdelmalek
el 26 de Jul. de 2012
from where are your importing your data, excell? are they from workspace?
Respuesta aceptada
Andrei Bobrov
el 26 de Jul. de 2012
Editada: Andrei Bobrov
el 26 de Jul. de 2012
Amodified = [];
for jj = 1:size(A,1)
if ~strcmp(A{jj,3},' ')
z = [A([jj,jj],1:2),...
[{[A{jj,3}(1),A{jj,3}(3:end)]};...
{[A{jj,3}(2),A{jj,3}(3:end)]}]];
else
z = A([jj],:);
end
Amodified = [Amodified;z];
end
Más respuestas (1)
Azzi Abdelmalek
el 26 de Jul. de 2012
Editada: Azzi Abdelmalek
el 26 de Jul. de 2012
%i tryed this code to test a 30000x3 array
for k=1:10;A=[A;A];end % A is now a 36864x3
n=size(A,1)
c1=num2cell([1:n]')
a=[c1 A]
b=sortrows(a,4)
B=b(:,4)
d=max(find(cellfun(@(x) length(x)>2,B)==0))
C=b(d+1:end,:)
n1=size(C,1)
ind1=1:2:2*n1-1;ind2=2:2:2*n1,C1=C;C2=C;
C1(:,4)=cellfun(@(x) strtrim(regexprep(x,x(1),'')),C(:,4),'UniformOutput',false)
C2(:,4)=cellfun(@(x) strtrim(regexprep(x,x(2),'')),C(:,4),'UniformOutput',false)
D=cell(n1*2,4); D(ind1,:)=C2; D(ind2,:)=C1;
E=sortrows([b(1:d,:) ; D],1);
Result=E(:,2:4)
% the program works % depending on the performance of your computer, it takes maby longer,
0 comentarios
Ver también
Categorías
Más información sobre Classification en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!