Select columns of a table using matching column names

363 visualizzazioni (ultimi 30 giorni)
Hello everyone!
I'm facing the following problem: I have a cell array containing strings, let's call it "v"
On the other hand I have a huge table , let's call it "T", from which I want to select only the columns that have the column name that corresponds to the names contained in vector "v".
Any kind of help will be appreciated
Thank you

Risposta accettata

Voss
Voss il 14 Giu 2022
v = {'Var1' 'Var3'}
v = 1×2 cell array
{'Var1'} {'Var3'}
T = table([1;2;3],[4;5;6],[7;8;9])
T = 3×3 table
Var1 Var2 Var3 ____ ____ ____ 1 4 7 2 5 8 3 6 9
% a table of the selected columns of T:
new_T = T(:,v)
new_T = 3×2 table
Var1 Var3 ____ ____ 1 7 2 8 3 9
% or, the data from the selected columns of T:
new_T_data = T{:,v}
new_T_data = 3×2
1 7 2 8 3 9
  2 Commenti
Enrico Gambini
Enrico Gambini il 15 Giu 2022
It worked, thank you! And what if not all the elements in v are present as column names in T?
Voss
Voss il 15 Giu 2022
If not all elements of v are column names of T, you can use ismember to get just the elements of v that do correspond to column names of T:
v = {'Var1' 'Var3' 'Var4'}
v = 1×3 cell array
{'Var1'} {'Var3'} {'Var4'}
T = table([1;2;3],[4;5;6],[7;8;9])
T = 3×3 table
Var1 Var2 Var3 ____ ____ ____ 1 4 7 2 5 8 3 6 9
v_to_use = v(ismember(v,T.Properties.VariableNames))
v_to_use = 1×2 cell array
{'Var1'} {'Var3'}
And use that the same as v was used before:
new_T = T(:,v_to_use)
new_T = 3×2 table
Var1 Var3 ____ ____ 1 7 2 8 3 9
new_T_data = T{:,v_to_use}
new_T_data = 3×2
1 7 2 8 3 9

Accedi per commentare.

Più risposte (0)

Categorie

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

Prodotti


Release

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by