2016-07-11 2 views
-2

Я хотел бы отметить мои дублированные значения по отношению к одной колонкеКак отметить дубликаты в новом столбце

Пример У меня есть 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 

Любой, кто может сказать мне, как это сделать?

+0

Спасибо HubertL за уборку u p беспорядок –

ответ

1

Вы можете сделать это с data.table, группируя вашим общим полем и проверки у вас есть более одной строки для каждой группы:

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 
1

Вот метод, использующий ave():

df$dup <- ave(df$X, df$X, FUN = length) > 1L; 
df; 
## X Y Z dup 
## 1 1 4 5 TRUE 
## 2 2 5 7 FALSE 
## 3 1 3 6 TRUE 
## 4 7 2 7 FALSE 
+0

@ProcrastinatusMaximus pro-whitespace? – bgoldst

+0

улучшает читаемость imo ;-) (что важно для ответов) – Jaap

+0

:) – bgoldst

1

Использование duplicated от базы R:

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