Let\'s say I have the following data frame:
> myvec name order_no 1 Amy 12 2 Jack 14 3 Jack 16 4 Dave 11 5 Amy
This would also work but is less eloquent than the plyr solution:
x <- sapply(split(myvec, myvec$name), function(x) length(unique(x[, 2]))) data.frame(names=names(x), number_of_distinct_orders=x, row.names = NULL)