使用数字将新列添加到数据框中以显示日期顺序(从最早到最新)

时间:2019-04-04 02:12:18

标签: r

我目前有一个看起来像这样的数据框:

   ID        DOB
1 535 1994-03-06
2 429 2001-01-08
3 535 1999-06-12
4 535 2001-04-06
5 111 1994-08-08
6 429 1995-09-20

每行代表不同的人,每个ID表示每个人的家庭。

我想要的是这个

   ID        DOB birthOrder
1 111 1994-08-08          1
2 429 1995-09-20          1
3 429 2001-01-08          2
4 535 1994-03-06          1
5 535 1999-06-12          2
6 535 2001-04-06          3

我希望新的birthOrder列显示家庭中每个人的出生顺序(从最大到最小)。我将为此使用哪个功能?

该代码的另一个复杂之处是双胞胎的存在。如果数据框中有双胞胎,我希望结果数据框看起来像这样:

   ID        DOB birthOrder
1 111 1994-08-08          1
2 429 1995-09-20          1
3 429 2001-01-08          2
4 429 2001-01-08          2
5 535 1994-03-06          1
6 535 1999-06-12          2
7 535 2001-04-06          3`

我可以使用rank中的dplyr函数来创建此新变量吗?

1 个答案:

答案 0 :(得分:0)

按“ ID”分组后,我们可以使用sheme -> run -> info -> Debug executable 。由于行需要按'DOB'进行排序,因此在转换为row_number()类后,按{DOB'按arrange

Date

或者在第二种情况下,我们可以使用library(tidyverse) df1 %>% group_by(ID) %>% arrange(ID, as.Date(DOB)) %>% mutate(birthOrder = row_number()) # A tibble: 6 x 3 # Groups: ID [3] # ID DOB birthOrder # <int> <chr> <int> #1 111 1994-08-08 1 #2 429 1995-09-20 1 #3 429 2001-01-08 2 #4 535 1994-03-06 1 #5 535 1999-06-12 2 #6 535 2001-04-06 3

match