我有以下数据集:
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 循环?任何帮助将不胜感激。
我们可以使用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)
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |