Select rows in a table given two conditions
13 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Max Bornemann
am 5 Apr. 2019
Kommentiert: Guillaume
am 5 Apr. 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.
0 Kommentare
Akzeptierte Antwort
Guillaume
am 5 Apr. 2019
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 Kommentare
Guillaume
am 5 Apr. 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'}
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Characters and Strings 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!