Поиск дублирующих элементов в нескольких парах столбцов в R - PullRequest
1 голос
/ 09 января 2020

плохо знакомы с R и программированием. Это может быть простой вопрос. Я пытаюсь найти дубликаты элементов в определенных парах столбцов и заменить оригинал и дубликат N / A. Поэтому, если у меня есть следующий набор данных:

mydf <- structure(list(V1 = c(1, 2, 3, 1, 3, 2) V2 = c("zz", "aa", "bb", "zz", "yy", 
"ii"), V3 = c("aa", "ff", "aa", "hh", "cc", "jj"), V4 = c("ee", 
"xx", "ee", "hh", "dd", "kk"), V5 = c(213L, 254L, 235L, 356L, 
796L, 954L)), class = "data.frame", row.names = c(NA, -6L))

  V1 V2 V3 V4  V5
1  1 zz aa ee 213
2  2 aa ff xx 254
3  3 bb aa ee 235
4  1 zz hh hh 356
5  3 yy cc dd 796
6  2 ii jj kk 954

, я бы хотел найти строки, которые дублируются, либо в V1 и V2, либо в V3 и V4. Таким образом, конечный результат будет выглядеть так:

    V1   V2   V3   V4  V5
1   N/A  N/A  N/A  N/A 213
2    2   aa   ff   xx  254
3    3   bb   N/A  N/A 235
4   N/A  N/A  hh   hh  356
5    3   yy   cc   dd  796
6    2   ii   jj   kk  954

1 Ответ

0 голосов
/ 09 января 2020

Вы можете проверить duplicated строк в разных столбцах и заменить его на NA.

cols1 <- c('V1', 'V2')
cols2 <- c('V3', 'V4')

mydf[cols1][duplicated(mydf[cols1]) | duplicated(mydf[cols1], fromLast = TRUE),] <- NA
mydf[cols2][duplicated(mydf[cols2]) | duplicated(mydf[cols2], fromLast = TRUE),] <- NA

mydf
# V1   V2   V3   V4  V5
#1 NA <NA> <NA> <NA> 213
#2  2   aa   ff   xx 254
#3  3   bb <NA> <NA> 235
#4 NA <NA>   hh   hh 356
#5  3   yy   cc   dd 796
#6  2   ii   jj   kk 954
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...