Select rows in a table given two conditions
13 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Max Bornemann
el 5 de Abr. de 2019
Comentada: Guillaume
el 5 de Abr. de 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 comentarios
Respuesta aceptada
Guillaume
el 5 de Abr. de 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 comentarios
Guillaume
el 5 de Abr. de 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'}
Más respuestas (0)
Ver también
Categorías
Más información sobre Characters and Strings en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!