ruby - Calculating daily lag -


is there nicer way calculate lag (value - previous value) in ruby? came with. if lag greater 0 return 1, if less return -1

(my code below not work. using ruby 2.3.5)

def lagchange(arr,k=1)   prev=nil   ret=[]   arr.each{|x|     if(x.to_i>-9999)       ret<<if(x-prev>0){1}else{-1}end     else       ret<<"na"     end     prev=x.to_i   }   return ret end  lagchange([1,2,3,5]) #na 1 1 -1 

looks spaceship operator might come in handy here:

def lagchange(arr)   arr.map.with_index |x, idx|     idx == 0 ? "na" : x <=> arr[idx - 1]   end end  lagchange([1,2,2,1])  => ["na", 1, 0, -1]  

note returns 0 if equal(no lag).