DolphinDB: ¿Cómo obtener la primera fila con el valor máximo de cada grupo deslizante?
Estoy trabajando en agrupar datos según si el valor en una columna es mayor que el umbral dado. Aquí, un grupo contiene datos continuos no menores que el umbral dado. Me gustaría recuperar la primera fila que contenga el valor máximo en un grupo, y si solo hay un valor en un grupo, debería guardarse directamente.
Como se muestra en la imagen de abajo, supongamos que el umbral es 0.3, y quiero obtener los registros señalados por flechas:
¿Solo se puede lograr escribiendo un bucle for ..?
davy.ai
No, es necesario lograrlo mediante la escritura de un ciclo for .. loop. En su lugar, se puede utilizar una función de ventana deslizante para agrupar los datos por el umbral especificado y recuperar la primera fila que contenga el valor máximo en un grupo. La función SlidingWindowBy en DolphinDB se puede utilizar para este propósito.
Aquí le mostramos cómo puede obtener el resultado deseado:
La función
group
crea grupos basados en la condiciónvalue > umbral
. La instrucciónselect
recupera la primera fila que contenga el valor máximo en cada grupo. La instrucciónunion
combina este resultado con los registros que tienen un valor menor o igual al umbral. Esto le da el resultado deseado sin tener que utilizar un ciclo for .. loop.