R 如何在新列中标记重复项

R 如何在新列中标记重复项,r,R,我想针对一列标记重复的值 例如,我有一个df X Y Z 1 4 5 2 5 7 1 3 6 7 2 7 然后我需要一个新的数据帧df2,创建一个新的列dup,该列指示X是否被复制 X Y Z dup 1 4 5 TRUE 2 5 7 FALSE 1 3 6 TRUE 7 2 7 FALSE 有谁能告诉我怎么做吗?您可以使用数据。表,按公共字段分组,并

我想针对一列标记重复的值

例如,我有一个df

X    Y    Z 
1    4    5
2    5    7
1    3    6
7    2    7
然后我需要一个新的数据帧df2,创建一个新的列dup,该列指示X是否被复制

X    Y    Z   dup
1    4    5   TRUE
2    5    7   FALSE
1    3    6   TRUE
7    2    7   FALSE

有谁能告诉我怎么做吗?

您可以使用
数据。表
,按公共字段分组,并检查每个组是否有多行:

library(data.table)
dt <- fread("X    Y    Z 
1    4    5
2    5    7
1    3    6
7    2    7")

dt[, dup := .N > 1, by = X]

   X Y Z   dup
1: 1 4 5  TRUE
2: 2 5 7 FALSE
3: 1 3 6  TRUE
4: 7 2 7 FALSE
库(data.table)
dt 1,by=X]
X Y Z重复
1:14.5对
2:257假
3:1 3 6对
4:727假
这里有一个方法,使用:

df$dup 1L;
df;
##X Y Z重复
##1 1 4 5正确
##2 2 5 7错误
##3 1 3 6正确
##4 7 2 7错误

使用从基本R复制的

df2 <- df
df2$dup <- c(duplicated(df2$X, fromLast = TRUE)  | duplicated(df2$X))

df2感谢HubertL清理mess@ProcrastinatusMaximus支持空白?它提高了可读性;-)(这对答案很重要)谢谢,这很简单,也很容易理解,而且很有效
df2 <- df
df2$dup <- c(duplicated(df2$X, fromLast = TRUE)  | duplicated(df2$X))