Indexing R:按组和年份划分的指数,同一组和年份的数字相似

Indexing R:按组和年份划分的指数,同一组和年份的数字相似,indexing,dplyr,counter,identifier,Indexing,Dplyr,Counter,Identifier,我有一个数据框架,显示了父母和年份的孩子出生情况。我需要的是一个新的列,该列对每个孩子的出生顺序进行索引,但如果来自同一父母的两个孩子在同一年出生,则提供相同的数字。数据如下: >df1 id year name parent1 2001 bas parent1 2002 jack parent2 1991 david parent3 1993 daniel parent3 1993 jasper parent3 1994 melany parent4

我有一个数据框架,显示了父母和年份的孩子出生情况。我需要的是一个新的列,该列对每个孩子的出生顺序进行索引,但如果来自同一父母的两个孩子在同一年出生,则提供相同的数字。数据如下:

>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
到目前为止,我为每位家长每年的孩子创建了一个指数,但即使孩子出生在同一年,他们的数字也会不断上升。我使用了以下代码:

> 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
你有解决这个问题的办法吗?我的代码有没有稍微的调整来解决这个问题?提前谢谢

您可以对行数使用密集排列:

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
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