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

R 为排名添加列,然后按组排名,r,R,我已经设法为我的数据框添加了一列排名 lowest.mortality.upper<-nrow(lowest.mortality) ## Add a ranking column lowest.mortality$ranking<-c(1:lowest.mortality.upper) 我可以用for循环,但那是1980年代的事。我确信子集或lapply应该可以工作,但我不知道如何工作 谢谢您似乎希望按组添加序列列。有几种选择 使用ave的base R解决方案是 df1$indx

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

lowest.mortality.upper<-nrow(lowest.mortality)
## Add a ranking column
lowest.mortality$ranking<-c(1:lowest.mortality.upper)
我可以用for循环,但那是1980年代的事。我确信子集或lapply应该可以工作,但我不知道如何工作


谢谢

您似乎希望按组添加序列列。有几种选择

使用
ave
base R
解决方案是

df1$indx <- with(df1, ave(seq_along(grp), grp, FUN=seq_along))

数据
df1我使用了ave解决方案,效果非常好。现在我只需要弄清楚它到底做了什么。。。。
df1$indx <- with(df1, ave(seq_along(grp), grp, FUN=seq_along))
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()) 
df1 <- structure(list(grp = c("AK", "AK", "TX", "TX", "TX")), .Names = 
"grp", class = "data.frame", row.names = c(NA, -5L))