To convert from numeric to categorical, use cut. In your particular case, you want:
df$category <- cut(df$a, breaks=c(-Inf, 0.5, 0.6, Inf), labels=c("low","middle","high"))
Or using dplyr:
library(dplyr)
res <- df %>% mutate(category=cut(a, breaks=c(-Inf, 0.5, 0.6, Inf), labels=c("low","middle","high")))
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#