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")
我的数据结构如下:
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")