Group all data by consecutive types For groups of "peak" type I want to select the highest For groups if "valley" type I want to select the lowest Filter the dataframe by these highest/lowest Expectation: I would have a dataframe that alternated each row between the highest peak and lowest valley.
The only way I know how to do this is by using a for loop and then adding consecutive values into a vector and then getting the max, then shoving this in a new dataframe and so on.
For those who know python, this is what I did in that (I need to transfer my code to R though):
segmentation['min_v'] = segmentation.groupby( segmentation.pv_type.ne(segmentation.pv_type.shift()).cumsum() ).price.transform(min) segmentation['max_p'] = segmentation.groupby( segmentation.segmentation.pv_type.ne(segmentation.pv_type.shift()).cumsum() ).price.transform(max)
Sample data set:
types <- c('peak', 'peak', 'valley', 'peak', 'valley', 'valley', 'valley') values <- c(1.01, 1.00, 0.4, 1.2, 0.3, 0.1, 0.2) segmentation <- data.frame(types, values) segmentation expectedTypes <- c('peak', 'valley', 'peak', 'valley') expectedValues <- c(1.00, 0.4, 1.2, 0.1 ) expectedResult <- data.frame(expectedTypes, expectedValues) expectedResult
I dont know a better way to generate the data.