Подтвердить что ты не робот

Предотвратить присоединение dplyr к NA

Я хотел бы сделать полное объединение 2 df. К моему удивлению, поведение dplyr по умолчанию - присоединяться к NA, если они существуют в обоих df. Есть ли возможность предотвратить выполнение dplyr?

Вот пример с внутренним соединением:

x <- data.frame(a = c(5, NA, 9), b = 1:3)
y <- data.frame(a = c(5, NA, 9), c = 4:6)
z <- dplyr::inner_join(x, y, by = 'a')

Я хотел бы, чтобы z содержал только 2 записи, а не 3. В идеале я хочу сделать это без необходимости вручную отфильтровывать записи с NA заранее, а затем добавлять их к результату (поскольку это кажется неуклюжим).

4b9b3361

Ответ 1

Вы можете использовать na_matches = "never". Это находится в NEWS для v. 0.7.0, но я не вижу его в документации. По умолчанию используется na_matches = "na".

Это возвращает две строки вместо трех:

dplyr::inner_join(x, y, by = 'a', na_matches = "never")

  a b c
1 5 1 4
2 9 3 6