Каков правильный способ подсчета результата левого внешнего соединения с использованием dplyr?Подсчет результата левого соединения с использованием dplyr
Рассмотрим два фрейма данных:
a <- data.frame(id=c(1, 2, 3, 4))
b <- data.frame(id=c(1, 1, 3, 3, 3, 4), ref_id=c('a', 'b', 'c', 'd', 'e', 'f'))
a
определяет четыре различных идентификаторов. b
указывает шесть записей, которые содержат идентификаторы в a
. Если я хочу, чтобы увидеть, сколько раз упоминается каждый ID, я мог бы попробовать это:
a %>% left_join(b, by='id') %>% group_by(id) %>% summarise(refs=n())
Source: local data frame [4 x 2]
id refs
(dbl) (int)
1 1 2
2 2 1
3 3 3
4 4 1
Однако результат может ввести в заблуждение, потому что это означает, что ID 2
сослались один раз, когда на самом деле, он никогда не ссылается (в промежуточный кадр данных, ref_id был NA
для ID 2). Я хотел бы избежать введения отдельной библиотеки, такой как sqldf
.
Не знаю, почему кто-то хочет downvote этот Q & A ... – Frank