R group_by%>%full_join失去了NA记录

时间:2019-03-05 14:45:58

标签: r dplyr

请考虑以下两个数据帧:

t1<-data.frame(Time=1:3,Cat=rep("A",3),SomeValue=rep("t1",3))
t2<-data.frame(Time=c(1,2,3,1,3),Cat=rep("A",5),Id=c(1,1,1,2,2),SomeOtherValue=c(1,2,3,4,5))

在我的应用程序中,我需要进行完全连接并使用缺失的记录/值。对子集执行部分full_join(将var分组)是可行的,但是当我尝试未过滤的方法时,我丢失了丢失的值。

这将给我6条记录

t2 %>% group_by(Id) %>% filter(Id==2) %>%  full_join(t1,by=c("Time","Cat"))
t2 %>% group_by(Id) %>% filter(Id==1) %>%  full_join(t1,by=c("Time","Cat"))

这将给我5,Id == 2和Time == 2的缺失项(NA值)消失了:

t2 %>% group_by(Id) %>% full_join(t1,by=c("Time","Cat"))

我对group_by的理解是,它按变量进行分组,并在每个组上继续进行以下所有我的突变,映射等操作。它应该以这种方式表现吗?

1 个答案:

答案 0 :(得分:3)

正确阅读文档后,我终于找到了指出要加入的组被忽略的部分。 ?full_join