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

2 visualizzazioni (ultimi 30 giorni)
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

Risposta accettata

Thorsten
Thorsten il 20 Lug 2016
Modificato: Thorsten il 20 Lug 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,:) = [];

Più risposte (1)

Image Analyst
Image Analyst il 20 Lug 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()???

Categorie

Scopri di più su Polynomials in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by