проверка повторяющихся записей в строках фрейма данных

#r

Вопрос:

мои данные могут содержать много столбцов от ID2 до ID1000, и для этих столбцов в фрейме данных я хочу создать функциональность, которая может проверять каждую строку, если какая-либо запись содержит более одной.

Ни одна запись не должна поступать более одного раза.

таким образом, в моем фрейме данных A0012 появляется дважды во втором ряду. и в восьмом ряду AB982 появляется дважды. всякий раз, когда какая-либо запись содержит более одной, она должна отображаться как дублирующая запись.

 df <- data.frame(ID =c("DEV2962","KTN2252","ANA2719","ITI2624","DEV2698","HRT2921",NA,"KTN2624","ANA2548","ITI2535","DEV2732","HRT2837","ERV2951","KTN2542","ANA2813","ITI2210"),
                 city=c("DEL","mum","DEL","MUM","DEL","del","MUM","DEL","del","MUM","mum","mum","mum","mum","DEL","DEL"),
                 Name= c("dev,akash","singh,Ajay","abbas,salman","lal,ram","singh,nkunj","garg,prabal","ali,sanu","singh,kunal","tomar,lakhan","thakur,praveen","ali,sarman","khan,zuber","singh,giriraj","sharma,lokesh","pawar,pooja","sharma,nikita"),
                 ID2 = c("A0011","A0011","A0011","A0011","A0011","A0012","AB702","AB328","AC728","AC314","AC742","AC919","AC062","AD712","AD021","AD920"),
                 ID3 = c("A0012","A0012","A0012","A0012","A0012","A0013","AB712","AB712","AB702","AB328","AC314","AC728","AB702","AB712","AC742","AC919"),
                 ID4 = c(NA,"A0013","A0013","A0013","AB982","AB982",NA,"AB982","A0013","A0012","A0012","A0012","A0012",NA,"A0013","A0012"),
                 ID5 =c(NA,"A0012","AB012","AB012",NA,"AB702",NA,"A0013",NA,"A0011","A0011",NA,"A0011",NA,NA,NA),
                 ID6 = c(NA,NA,NA,"AB982",NA,NA,NA,"A0012",NA,NA,NA,NA,NA,NA,NA,NA),
                 ID7 = c(NA,NA,NA,NA,NA,NA,NA,"A0011",NA,NA,NA,NA,NA,NA,NA,NA),
                 ID8 =c(NA,NA,NA,NA,NA,NA,NA,"AB982",NA,NA,NA,NA,NA,NA,NA,NA))


 

Результат должен выглядеть следующим образом

введите описание изображения здесь

Ответ №1:

это забавное добавление столбца с количеством дубликатов во всей строке

 cbind(df, 
      dupl = apply(df,MARGIN = 1, function(x) sum(duplicated(x,incomparables=NA)) )) ## use df[,-c(1:3)] in apply if you want only check IDs
 

и укажите «доступны дубликаты».

 library(dplyr)
cbind(df, 
      dupl = apply(df,MARGIN = 1, function(x) sum(duplicated(x,incomparables=NA)) )) %>% ## use df[,-c(1:3)] in apply if you want only check IDs
  mutate(dupl = ifelse(dupl >0 , 'duplicates available', ''))

 

Комментарии:

1. получение ошибки Ошибка при применении(df, МАРЖА = 1, сумма функций(x) (дублируется(x, несопоставимые = NA))) : dim(X) должна иметь положительную длину

2. вы уверены , что используете таблицу как df , а не вектор?

3. не могли бы вы проверить, какой dim(df) возврат?

4. [1] 16 10 это вывод

5. … так что эта ошибка невозможна для этого df . чтобы я обязательно попробовал: base::apply(df, MARGIN = 1, function(x) base::sum(base::duplicated(x,incomparables=NA)))