r语言 - 使用联接合并到数据集 - 将双精度值放在一个表中



我有两个小提布斯:

a <- tibble(month=c("Jan", "Feb", "Jan", "Feb"),
x=c(1,1,2,2))
b <- tibble(x=c(1,2,1,2),
y=c("a", "b", "c", "d"),
z=c("m", "n", "m", "n"))

我想加入。但是,我对变量y提供的其他信息不感兴趣;我知道对于x中的任何值,z中只有一个值。因此,期望的结果是:

# A tibble: 4 x 3
month     x z    
<chr> <dbl> <chr>
1 Jan       1 m    
2 Feb       1 m    
3 Jan       2 n    
4 Feb       2 n

但是使用 left_join,所有值都"翻倍":

> left_join(a, b, by="x")
# A tibble: 8 x 4
month     x y     z    
<chr> <dbl> <chr> <chr>
1 Jan       1 a     m    
2 Jan       1 c     m    
3 Feb       1 a     m    
4 Feb       1 c     m    
5 Jan       2 b     n    
6 Jan       2 d     n    
7 Feb       2 b     n    
8 Feb       2 d     n  

这当然是可以理解的,但是 - 就我而言 - 不受欢迎。我尝试使用group_by(month) %>% summarise(z=z)折叠表格,但这不起作用,因为总结似乎无法处理因素。解决方案是什么?

答案是(在这里找到(:

a %>%
left_join(b %>%
select(x, z) %>%
unique())

相关内容

最新更新