In table, how to select values in one column based on values in another column?
39 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Doheon Lee
le 17 Avr 2021
Commenté : Doheon Lee
le 20 Avr 2021
As given in the title, I like to call values in one table based on values in anothe column. I have a follwoing table.
T = table({'a'; 'b'; 'c'; 'd'; 'e'}, [1;2;3;4;5], 'variablenames', {'name', 'value'});
I like to call elements in the 'value' column, for 'd', 'b', 'e' in the 'name' column. So the expected result is as below
result =
4.00
2.00
5.00
I can do this with the following codes.
order = {'d', 'b', 'e'};
[Lia, Locb] = ismember(T.name, order);
order_chosen = T.value(Lia);
Locb = nonzeros(Locb);
result = order_chosen(Locb);
However, as you can see, lines seem too many for such a relatively simple outcome. So I wonder if there is way to do the samething efficiently with shorter lines.
Thank you for any help in advance.
0 commentaires
Réponse acceptée
Cris LaPierre
le 17 Avr 2021
The simplest way to do this is using logical indexing, but that doesn't preserve the order. That makes it a more challenging problem to solve. Still, it can be done in fewer lines. I suggest using find.
T = table({'a'; 'b'; 'c'; 'd'; 'e'}, [1;2;3;4;5], 'variablenames', {'name', 'value'});
% Find rows corresponding to names, preserving order
[rows,~]=find(T.name==["d","b","e"]);
result = T(rows,"value")
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur LaTeX dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!