How to create a consecutive group number

后端 未结 8 1080
深忆病人
深忆病人 2020-11-21 16:13

I have a data frame (all_data) in which I have a list of sites (1... to n) and their scores e.g.

  site  score
     1    10
     1    11  
              


        
8条回答
  •  孤街浪徒
    2020-11-21 17:01

    Try Data$number <- as.numeric(as.factor(Data$site))

    On a sidenote : the difference between the solution of me and @Chase on one hand, and the one of @DWin on the other, is the ordering of the numbers. Both as.factor and factor will automatically sort the levels, whereas that doesn't happen in the solution of @DWin :

    Dat <- data.frame(site = rep(c(1,8,4), each = 3), score = runif(9))
    
    Dat$number <- as.numeric(factor(Dat$site))
    Dat$sitenum <- match(Dat$site, unique(Dat$site) ) 
    

    Gives

    > Dat
      site     score number sitenum
    1    1 0.7377561      1       1
    2    1 0.3131139      1       1
    3    1 0.7862290      1       1
    4    8 0.4480387      3       2
    5    8 0.3873210      3       2
    6    8 0.8778102      3       2
    7    4 0.6916340      2       3
    8    4 0.3033787      2       3
    9    4 0.6552808      2       3
    

提交回复
热议问题