Управление и маркировка дублирующихся записей в R-кадре данных - PullRequest
2 голосов
/ 02 мая 2019

У меня есть кадр данных, который выглядит следующим образом:

   id Name  Desc 
    1 A     abc
    1 A     abc  
    1 B     def  
    2 C     ghi  
    2 D     jkl  
    3 E     mno  
    4 F     pqr  

Я хочу идентифицировать дубликаты идентификаторов, а затем пометить дубликаты следующим образом:

id Name  Desc Person
 1 A     abc  Same Person
 1 A     abc  Same Person
 1 B     def  Different Person
 2 C     ghi  Different Person
 2 D     jkl  Different Person
 3 E     mno  Different Person
 4 F     pqr  Different Person

Пожалуйста, помогите!

1 Ответ

3 голосов
/ 02 мая 2019

Мы можем создать логический вектор с duplicated, преобразовать его в числовой индекс и изменить значения, основываясь на подаче входного вектора

df1$Person <- c("Different Person", "Same Person")[(duplicated(df1)|duplicated(df1, 
          fromLast = TRUE)) + 1]

Или с dplyr

library(dplyr)
df1 %>% 
  group_by_all %>%
  mutate(Person = case_when(n() >1 ~ "Same Person", TRUE ~ "Different Person"))

Данные

df1 <- structure(list(id = c(1L, 1L, 1L, 2L, 2L, 3L, 4L), Name = c("A", 
"A", "B", "C", "D", "E", "F"), Desc = c("abc", "abc", "def", 
"ghi", "jkl", "mno", "pqr")), class = "data.frame", row.names = c(NA, 
 -7L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...