在 R 中标记重复项

Man*_*anu 4 r

我有以下数据集:

dataset <- data.frame(id = c("A","A","A","A","B","B","B,"B"),
                      value = c(1,1,2,3,5,6,6,7))
Run Code Online (Sandbox Code Playgroud)

对于每个重复的 id,我想标记它发生的行,并且这个标志应该与数据帧源的长度相同。这是预期的结果:

id    value    flag
A     1        1
A     1        1
A     2        0
A     3        0
B     5        0
B     6        1
B     6        1
B     7        0
Run Code Online (Sandbox Code Playgroud)

有没有办法让我不必使用 for 循环?任何帮助将不胜感激。

Ron*_*hah 7

我们可以使用duplicatedwith 和 without fromLast = TRUE将所有重复的值标记为 1。

dataset$flag <- as.integer(duplicated(dataset$value) | 
                           duplicated(dataset$value, fromLast = TRUE))
dataset

#  id value flag
#1  A     1    1
#2  A     1    1
#3  A     2    0
#4  A     3    0
#5  B     5    0
#6  B     6    1
#7  B     6    1
#8  B     7    0
Run Code Online (Sandbox Code Playgroud)