Take elements from a cell variable to other based on a condition

1 view (last 30 days)
I have a cell type variable A with 8 rows and 500 columns:
code1 year value code1 *code2*
A={ 1037 1999 50,2 1037 110 [] [] 1
1062 1999 50,2 1062 *[]* [] [] 0
1242 1999 58,4 1242 *[]* [] [] 0
1255 1999 56,2 1255 881 [] [] 1}
And a cell type variable B with 21 rows and 10000 columns:
x 1994 1995 1996 1997 1998 1999 2000 2001 ...
B= {1037 110 110 110 110 110 110 873 873
1039 721 721 1242 [] [] [] [] []
1050 495 495 495 495 829 282 282 []
1062 228 228 228 282 282 *282* [] []
1242 86 86 86 86 86 *86* [] []
1249 118 37 37 37 37 37 37 []
1254 7 7 7 7 7 7 157 157
1255 37 37 37 37 37 881 16 16}
code2 is missing in some rows of variable A.
I would like to complete the 5th column of A (code2) by going to the 7th column of B(1999) and if A(:,1) and B(:,1)match ( code1 and 'x' ), place that value in A.
My new A would be:
code1 year value code1 *code2*
ANEW={ 1037 1999 50,2 1037 110 [] [] 1
1062 1999 50,2 1062 *282* [] [] 0
1242 1999 58,4 1242 *86* [] [] 0
1255 1999 56,2 1255 881 [] [] 1}
Can someone help me? Thank you.

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 11 Aug 2014
Edited: Azzi Abdelmalek on 11 Aug 2014
ic5=find(cellfun(@isempty,A(:,5) ))
for k=ic5'
ib1=find(cell2mat(B(:,1))==A{k,1})
if ~isempty(ib1)
A(k,5)=B(ib1,7)
end
end

More Answers (0)

Categories

Find more on MATLAB in Help Center and File Exchange

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!