【发布时间】:2015-11-05 02:27:03
【问题描述】:
使用 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 指定四个不同的 ID。 b 指定了六个引用a 中的 ID 的记录。如果我想查看每个 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 被引用过一次,而实际上它从未被引用过(在中间数据帧中,对于 ID 2,ref_id 是 NA)。我想避免引入单独的库,例如sqldf。
【问题讨论】:
-
不知道为什么有人要否决这个问答...