Add a “rank” column to a data frame

前端 未结 5 1927
滥情空心
滥情空心 2020-11-27 14:43

I have a dataframe with counts of different items, in different years:

df <- data.frame(item = rep(c(\'a\',\'b\',\'c\'), 3),
                 year = rep(c         


        
5条回答
  •  醉梦人生
    2020-11-27 15:01

    Using order function,

    transform(dat, x= ave(count,year,FUN=function(x) order(x,decreasing=T)))
      item year count x
    1    a 2010     1 3
    2    b 2010     4 2
    3    c 2010     6 1
    4    a 2011     3 2
    5    b 2011     8 1
    6    c 2011     3 3
    7    a 2012     5 3
    8    b 2012     7 2
    9    c 2012     9 1
    

    EDIT

    You can use plyr here also:

    ddply(dat,.(year),transform,x =  order(count,decreasing=T))
    

提交回复
热议问题