【问题标题】:Return 0 to second instance of duplicate返回 0 到重复的第二个实例
【发布时间】:2019-10-15 09:48:05
【问题描述】:
我有一个与以下类似的数据集:
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
任何帮助表示赞赏。
【问题讨论】:
标签:
r
dataframe
duplicates
【解决方案1】:
一个选项是
df$D <- as.integer(!duplicated(df[c("A", "B")]))
df$D
#[1] 1 1 1 0
【解决方案2】:
只是与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 而不是group_by(A,B)。