R:按组和年份索引,同一组和年份的数字相似

R: Index by group and year with similar number for same group and year

我有一个数据框,显示 children 的出生日期 parent 和年份。我需要的是一个新列,该列按 child 的出生顺序编制索引,但如果来自同一 parent 的两个 children 出生在同一年,则提供相同的数字。数据如下:

>df1
id       year  name
parent1  2001  bas
parent1  2002  jack
parent2  1991  david
parent3  1993  daniel
parent3  1993  jasper
parent3  1994  melany
parent4  1997  john
parent4  1999  gerard

到目前为止,我为 parent 每年创建了一个 child 的索引,但是 children 即使他们出生在同一年,也会得到递增的数字。我使用了以下代码:

> df2 <- df1 %>% group_by(id) %>% mutate(order = row_number(year))
> df2
id       year  name   order
parent1  2001  bas    1
parent1  2002  jack   2
parent2  1991  david  1
parent3  1993  daniel 1
parent3  1993  jasper 2
parent3  1994  melany 3
parent4  1997  john   4
parent4  1999  gerard 1

然而,我想要得出的结果是(注意 1993 年 parent3 的双“1”):

id       year  name   order
parent1  2001  bas    1
parent1  2002  jack   2
parent2  1991  david  1
parent3  1993  daniel 1
parent3  1993  jasper 1
parent3  1994  melany 2
parent4  1997  john   3
parent4  1999  gerard 1

你有解决这个问题的方法吗?我的代码是否有轻微的调整来解决这个问题?提前致谢!

您可以将 dense_rank 用于 row_number:

df %>% group_by(id) %>% mutate(order = dense_rank(year))

# A tibble: 8 x 4
# Groups:   id [4]
#       id  year   name order
#   <fctr> <int> <fctr> <int>
#1 parent1  2001    bas     1
#2 parent1  2002   jack     2
#3 parent2  1991  david     1
#4 parent3  1993 daniel     1
#5 parent3  1993 jasper     1
#6 parent3  1994 melany     2
#7 parent4  1997   john     1
#8 parent4  1999 gerard     2