I try to mutate new column to data.frame. When V column order changes from decreasing to increasing order, I use diff function inside
We need to concatenate with one more value to make the length equal as diff returns with a length one less than the length of the group. i.e.
length(df$V)
#[1] 30
length(diff(df$V))
#[1] 29
So, we concatenate with a dummy number at the beginning to make the length equal.
df %>%
group_by(gr) %>%
mutate(H=ifelse(c(0,diff(V))<0,"back","forward"))
If we need the first value to be 'back', change the condition to <=0