First create your data.frame IN
with the parameter stringsAsFactors=FALSE
as follows:
IN <- data.frame(ID,DATE=rep(DATE,3), stringsAsFactors=FALSE)
Then using ave
:
IN <- within(IN, { bla <- ave(DATE, ID, FUN=function(x) as.numeric(factor(x)))})
If you want aggregation
(like simon's answer) that can be accomplished using ave
as well by:
unique(within(IN, { bla <- ave(DATE, list(ID,DATE), FUN=length)}))
Alternatively, using table
as shown under comments:
as.data.frame(table(IN$ID, IN$DATE))