我有一个数据框:
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
我很高兴得到任何帮助。
答案 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