I'm not an experienced coder, but I'll field this candidate:
df <- read.table(sep=" ", header=T, text="
date symbol value
2014-01-03 A 2.5
2014-01-04 A 3.1
2014-01-06 A 4.5
2014-01-03 B 2.6
2014-01-05 B 3.2
2014-01-06 B 4.3")
library(plyr)
df <- df[order(df$symbol, df$date),]
df <- ddply(df, "symbol", transform, pctchg=value[length(value)]/value[length(value)-1]-1)
df <- df[order(-df$pctchg),]
bins <- 2
library(ggplot2)
groups <- cut_number(1:length(unique(df$pctchg)), n=bins)
levels(groups) <- 1:length(levels(groups))
df <- merge(x=df, y=cbind.data.frame(symbol=unique(df$symbol), bin=groups))
df[order(-df$pctchg),]
# symbol date value pctchg bin
# 1 A 2014-01-03 2.5 0.4516129 1
# 2 A 2014-01-04 3.1 0.4516129 1
# 3 A 2014-01-06 4.5 0.4516129 1
# 4 B 2014-01-03 2.6 0.3437500 2
# 5 B 2014-01-05 3.2 0.3437500 2
# 6 B 2014-01-06 4.3 0.3437500 2