How do I delete a row in a matrix where the first value isn't in a corresponding matrix?

2 Ansichten (letzte 30 Tage)
I have 2 tables like this:
table files:
| id | ....
------------
| 1 | ....
| 2 | ....
| 7 | ....
| 9 | ....
table blob:
| fileid | ....
------------
| 1 | ....
| 2 | ....
| 3 | ....
| 4 | ....
| 5 | ....
| 7 | ....
| 9 | ....
The tables fileid and id columns can be used to join the tables together.
How do I delete columns 3 4 5. Keep in mind this is only a simple example, I have a data set that contains thousands of rows

Akzeptierte Antwort

Thorsten
Thorsten am 20 Jul. 2016
Bearbeitet: Thorsten am 20 Jul. 2016
Create a logical index that has a 1 at each position where fileid has no match in id:
idx = ~ismember(fileid, id);
Delete the corresponding rows in your matrix A:
A(idx,:) = [];

Weitere Antworten (1)

Image Analyst
Image Analyst am 20 Jul. 2016
Try intersect() to find numbers that are common to both.
commonNumbers = intersect(fileid{:,1}, id{:,1});
Then use ismember() to find out where the numbers in commonNumbers occur in each table, say these are called rows1 and rows2.
Then use innerjoin():
newTable = innerjoin(fileid({rows1,1}, id{rows2,1});
Or something like that - that's untested, just off the top of my head. Or maybe you want outerjoin()???

Kategorien

Mehr zu Polynomials finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by