在重复值之间分配唯一的标识变量

时间:2016-02-25 08:18:17

标签: r unique uniqueidentifier

我将创建一些虚拟数据的简单示例:

case <- c('a','a','a','b','b','c','c','c','c','d','d','e','e')
object <- c(1,1,2,1,1,1,1,2,3,1,1,1,2)

df1 <- data.frame(case, object)

现在,对于每个唯一的caseobject值,我想创建一个相应的唯一数值(标识符)

df1$UNIQ_ID <- ........

最终结果应采用以下值c(1,1,2,3,3,4,4,5,6,7,7,8,9),如

unique(df1$object[df1$case=='a'])
unique(df1$object[df1$case=='b'])

我使用dpylrgroup_by(case)

1 个答案:

答案 0 :(得分:1)

我们可以在分组后使用.GRP data.table {&#39; case&#39;和&#39;对象&#39;在data.table对象(setDT(df1))上。

library(data.table)
setDT(df1)[,UNIQ_ID:= .GRP ,.(case, object)]
df1
#     case object UNIQ_ID
# 1:    a      1       1
# 2:    a      1       1
# 3:    a      2       2
# 4:    b      1       3
# 5:    b      1       3
# 6:    c      1       4
# 7:    c      1       4
# 8:    c      2       5
# 9:    c      3       6
#10:    d      1       7
#11:    d      1       7
#12:    e      1       8
#13:    e      2       9

base R选项

grp <- interaction(df1)
as.numeric(factor(grp, levels= unique(grp)))
#[1] 1 1 2 3 3 4 4 5 6 7 7 8 9