
I am looking for a way to extract the index at which a column of data gets to 90% maximum. I can use global variables to calculate out the max and the 90% of max, but then I would like to program to find the value closest to 90% in the column and return the index. I see how to return a value from an index, but not the other way around. Any suggestions? Thanks for any help!
Jordan
Hi Jordan,
Try creating a column with an expression that will take the difference between the value you are interested (0.9 * Data.max) and the Data. Also take the absolute value.
Then you can use a variable to pull the minimum of that column and return the index.
You can also use the returned index to pull the value from the data column.
Is this what you wanted to do?
I think that will do, I will give it a go and report back in a bit. Thanks so much for the prompt and easy instructions!
So I ran into a case where the supplied solution stops working. I have spent some time thinking through it, but I cannot think about how to solve this one. Any help would be appreciated.
Here is an example of my normal case where the abs((0.9 * Data.maxData) works and provides the point that I want to extract.
but I do have some data sets where the data is a little different and it messes up the formula as shown here:
So I am really interested in the first time the data crosses the 90% max threshold. Any ideas on how to extract this point in these cases where there is a point that is closer to 90%, but is after the line crosses the threshold. Thanks for any help!
I have a simple work around that requires some assumptions: I am using a mask to only analyze the first half of the data. I would love to hear any other more sophisticated solutions.
Here is one idea … add another expression that builds on the one that finds the minimums.
This will identify where you have more than one instance and return the index back.
The data would like something like this … where the minimum of the ‘DataCheckMultiple’ would be the index you want, and you can extract that using a variable.
Here is a visual of this data.
This way you are still using all the data. There are probably other ways to do this too but I think this will work.
Thanks for the idea, but this doesn’t quite solve the issue. The issue is that I am interested in the first instance that the data passes 90%… the x axis is time, so how long it takes to get to 90% of the measurement. However, there may be data points subsequent to the first point past 90% that are actually closer to 90%. The absolute value equation will always return the closest point to the target, but I am not after that info. Your suggestion fixes exact matches, but my data pretty much never has an exact match at 90% or a match at the closest point to 90%. Thanks for the help though! I will keep thinking about it. This is an easy problem to program in python or other language… I may see if I can work out an automated way of getting the data. If you are interested, this may be a good use case of beefing up the command line interface…
So now I think I understand — The last idea was finding all the exact matches that were closest to the threshold, but you are correct that values below the threshold at the distance would also be found.
If you want the first instance that exceeds, do that in one step. Use an if statement and return the index “#” when the values exceeds.
The minimum of the column DataCheck is the index you are looking for! ( I think 🙂
You could also return the time column directly instead of the row index ‘#’.
You must be logged in to reply to this topic.