# Another data manipulation question,need some help!

Asked by Xiao Tang on 23 Jun 2012
Latest activity Commented on by Xiao Tang on 24 Jun 2012

There are two matrix A and B.

A =

```          15         4534      0          31
10         0         346        0
10         342       124        11
20         345       0          13
25         73        311        15
15         0         0          14
10         0         153        16
15         532       129        19
20         153       0          0```

B =

```                  10        4324      13976       7645
15        7675      3821        14510
20        13198     0           3874
25        4321      4321         4321```

According to the first column, replace the rest columns of A with B.

The result should be:

C =

```                  15        7675      3821        14510
10        4324      13976       7645
10        4324      13976       7645
20        13198     0           3874
25        4321      4321         4321
15        7675      3821        14510
10        4324      13976       7645
15        7675      3821        14510
20        13198     0           3874```

I used 2 loops(shown as follows) to get the result. But I was wondering if there is an easier way.

C(:,1) = A(:,1);

```              for i = 1: length(A)
for n = 1:length(B)
if A(i,1) ==B(n,1)
C(i,2:4) = B(n,2:4);
end
end
end```

Any suggestion is welcomed!

## Products

No products are associated with this question.

Answer by Walter Roberson on 23 Jun 2012
```[tf, idx] = ismember( A(:,1), B(:,1) );
A(tf,:)= B(idx(tf), :);
```

## 1 Comment

Xiao Tang on 23 Jun 2012

Thanks @Walter Roberson. The ismember function and logical index should be more efficient than my loop!

Answer by Andrei Bobrov on 23 Jun 2012
```[b b b] = unique(A(:,1));
C = B(b,:)
```

## 1 Comment

Xiao Tang on 24 Jun 2012

What can I say, man. You gave me great answers to all my questions.Thanks a million!