在具有多个组的数据框中创建唯一的组ID

时间:2018-10-25 16:48:40

标签: r dataframe dplyr

我有一个数据框:

y <- c(3, 3, 3, 2, 2, 2, 2, 1, 1, 2)
z <- c(1, 1, 1, 2, 2, 3, 3, 3, 4, 4)

df <- data.frame(y, z)

> df
   y z
1  3 1
2  3 1
3  3 1
4  2 2
5  2 2
6  2 3
7  2 3
8  1 3
9  1 4
10 2 4

现在,我想创建一个组ID。这些组基于y,应从1到n编号。 y的重复数字是一组。此外,这些组基于z嵌套在其他组中,因此,如果y的相等数字位于z的不同组中,则它们表示不同的组。这意味着:对于y,有6个组,对于z,有4个组。结果应该是:

> df
   y z group_id
1  3 1        1
2  3 1        1
3  3 1        1
4  2 2        2
5  2 2        2
6  2 3        3
7  2 3        3
8  1 3        4
9  1 4        5
10 2 4        6

我很高兴得到任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用rleid包中的data.table-

df$group_id <- data.table::rleid(paste(df$y, df$z))
df
   y z group_id
1  3 1        1
2  3 1        1
3  3 1        1
4  2 2        2
5  2 2        2
6  2 3        3
7  2 3        3
8  1 3        4
9  1 4        5
10 2 4        6

答案 1 :(得分:1)

我们可以使用'/'中的'\'

rleid