Как определить несовпадающие идентификаторы между двумя кадрами данных перед объединением? - PullRequest
0 голосов
/ 03 февраля 2019

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

Моя функция до сих пор выглядит следующим образом:

match_check <- function(df1,var1,df2,var2){
  df1ids <- unique(df1$var1)
  matchs <- c()
  no_matchs <- c() 
  for (id in df1ids){
    if (id %in% df2$var2 == TRUE){
      match <- append(match, id)}
     else{
       no_matchs <- append(no_match,id)
     }
  }
  print(no_matchs)
  match2 <- c()
   no_match2 <- c()
  df2ids <- unique(df2$var2)
  for (id in df2ids){
    if (id %in% df1$var1 == TRUE){
      match2 <- append(match2, id)}
     else{
      no_match2 <- append(no_match2,id)
    }
  }
  print(no_match2)
 }

test1 <- data.frame(id=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15))
test2 <- data.frame(id=c(0,-2,-4,-6,-1,1,2,3,4,5,5,6,7,8))

match_check(test1,id,test2,id)

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

no_matchs = c(9,10,11,12,13,14,15)
no_match2 = c(0,-2,-4,-6)

1 Ответ

0 голосов
/ 03 февраля 2019
test1 <- data.frame(id=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15))
test2 <- data.frame(id=c(0,-2,-4,-6,-1,1,2,3,4,5,5,6,7,8))

(no_matchs <- setdiff(test1$id, test2$id))
#> [1]  9 10 11 12 13 14 15
(no_match2 <- setdiff(test2$id, test1$id))
#> [1]  0 -2 -4 -6 -1
...