返回0到R中第二个重复的实例

时间:2019-05-29 18:12:47

标签: r dataframe duplicates

我具有与以下类似的数据集:

A  B   C 
1  10  5 
1  20  1
2  30  1
2  30  1

我想添加一个返回1的列,直到我们遇到A和B的副本时,当我需要返回0时(但仅适用于第二个实例),所以:

A  B   C  D
1  10  5  1
1  20  1  1
2  30  1  1
2  30  1  0

任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:3)

一个选项是

df$D <- as.integer(!duplicated(df[c("A", "B)]))
df$D
#[1] 1 1 1 0

答案 1 :(得分:1)

只是带有check_ctlspec -p "AF (state=d -> AX state=a)" 的涂鸦:

library(dplyr)

或者如果您希望它为零“仅用于第二个实例” ,这意味着第三个实例也将是一个,则可以进行以下操作:

df %>% group_by(A,B) %>% mutate(D = +((1:n())==1))

在该示例中,您的重复项不仅适用于df %>% group_by(A,B) %>% mutate(D = +!((1:n())==2)) A,还适用于B。如果确实如此,则可以使用C代替group_by_all