为排名添加列,然后按组排名

时间:2015-07-28 06:28:09

标签: r

我已设法为我的数据框添加一列排名

lowest.mortality.upper<-nrow(lowest.mortality)
## Add a ranking column
lowest.mortality$ranking<-c(1:lowest.mortality.upper)

但是现在我必须根据另一个列状态对更大的数据集进行排名。所以它会读到

AK 1
AK 2
TX 1
TX 2
TX 3

我可以使用for循环,但那就是1980年代。我确定子集或lapply应该可以工作,但我无法弄清楚如何

由于

1 个答案:

答案 0 :(得分:0)

好像你想按组添加一个序列列。有几种选择。

使用base R的{​​{1}}解决方案

ave

或者可以使用df1$indx <- with(df1, ave(seq_along(grp), grp, FUN=seq_along))

中的getanID来完成此操作
splitstackshape

或者

library(splitstackshape)
getanID(df1, 'grp')[]
#    grp .id
#1:  AK   1
#2:  AK   2
#3:  TX   1
#4:  TX   2
#5:  TX   3

数据

library(dplyr)
df1 %>%
   group_by(grp) %>%
   mutate(indx = row_number())