Select rows in a table given two conditions

69 vues (au cours des 30 derniers jours)
Max Bornemann
Max Bornemann le 5 Avr 2019
Commenté : Guillaume le 5 Avr 2019
Hello everyone. I have the following table named TAB1:
Description Year Value
'Steam Coal EU' 2045 78.5000000000000
'Steam Coal EU' 2050 80
'Steam Coal EU' 2055 81.5000000000000
'CO2' 2015 7.62553571428572
'CO2' 2020 8.87000000000000
'CO2' 2025 19.2558584219015
I`m searching for a way to get the Value of CO2 and 2020 (8.87000000000000). My original table is way bigger and might be completed later, so hard coding like TAB1{4,3} is not what i`m searching.
I have the following approach:
TAB1{strcmp(TAB1,'CO2'),'Value'})
This gives me all values with CO2 on the left - but i just want the second value. Can someone help? Thanks a lot.

Réponse acceptée

Guillaume
Guillaume le 5 Avr 2019
I'm not conviced that your TAB1 is actually a table.
If it is:
TAB1.Value(strcmp(TAB1.Description, 'CO2') & TAB1.Year == 2020)
Note that if you're using strings instead of char arrays in the Description variable, then you can use == instead of strcmp:
TAB1.Value(TAB1.Description == "CO2" & TAB1.Year == 2020)
  2 commentaires
Max Bornemann
Max Bornemann le 5 Avr 2019
Thank you Guillaume! Especially the second hint is nice to know. I also found a different way:
TAB1{strcmp(TAB1.Description,'CO2'),'Value'}(2,1)
Guillaume
Guillaume le 5 Avr 2019
TAB1{strcmp(TAB1.Description,'CO2'),'Value'}(2,1)
only works if 2020 is the 2nd row of all the 'CO2' rows. If you want to use that syntax the proper equivalent is:
TAB1{strcmp(TAB1.Description, 'CO2') & TAB1.Year == 2020, 'Value'}
You can indeed access the content of a table with either {} indexing or . indexing. I find . indexing easier to read. If you went {} indexing the whole way, it would read as:
TAB1{strcmp(TAB1{:, 'Description'}, 'CO2') & TAB1{:, 'Year'} == 2020, 'Value'}

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Structures 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!

Translated by