R 代码根据多个变量分配序列

R code to assign a sequence based off of multiple variables

我的数据结构如下:

ID   Day   Desired Output
1    1      1
1    1      1
1    1      1
1    2      2
1    2      2
1    3      3
2    4      1
2    4      1
2    5      2
3    6      1
3    6      1

是否可以在不使用循环的情况下为所需的输出创建一个序列?数据集非常大,所以循环不起作用,是否可以使用 dplyr 包或 cumsum/diff 的组合来做到这一点?

一个选项是按 'ID' 分组,然后使用 'Day' 列的 unique 值对 'Day' 执行 match

library(dplyr)
df1 %>% 
    group_by(ID) %>% 
    mutate(desired = match(Day, unique(Day))) 

数据

df1 <- structure(list(ID = c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 
3L), Day = c(1L, 1L, 1L, 2L, 2L, 3L, 4L, 4L, 5L, 6L, 6L)), row.names = c(NA, 
-11L), class = "data.frame")