返回联接条件(dplyr)中指定的所有列
如果我有两个数据帧,并使用dplyr的返回联接条件(dplyr)中指定的所有列,r,dplyr,R,Dplyr,如果我有两个数据帧,并使用dplyr的left\u join: test <- data.frame(numbers = c(1, 2, 3), letters = c("a", "b", "c")) test2 <- data.frame(numbers2 = c(1, 2), letters2 = c("a", NA)) left_join(test, test2, by = c("numbers" = "numbers2")) testyh根据设计,numbers2已经包含
left\u join
:
test <- data.frame(numbers = c(1, 2, 3), letters = c("a", "b", "c"))
test2 <- data.frame(numbers2 = c(1, 2), letters2 = c("a", NA))
left_join(test, test2, by = c("numbers" = "numbers2"))
testyh根据设计,numbers2
已经包含在结果数据帧中的numbers
中。如果原始的test2
不包含NA,则可以在letters2中看到它。如果您确实需要它,那么在test2
中将它复制为某物,然后在结果中重新命名。numbers
和numbers2
与您加入的相同。由于test2
没有numbers2=3
的记录,它返回NA
,而另一个NA
存在,因为您的数据中有一个(列test2
中的字母2
);代码或代码中没有问题design@Titolondon基于上面的数据框架,我无法回答“test2中有多少数字也在测试中”的问题。如果你?left_join
它说:从x返回所有行,从x和y返回所有列。x中与y中不匹配的行将在新列中具有NA值。如果x和y之间有多个匹配项,则会返回所有匹配项的组合。我认为您的结果与?left\u join
的解释完全一致。您获得了x和y的所有列以及所有行。但是,键列中没有重复项,因此没有多个匹配项。您无法回答您的问题,因为test2
中存在NA
(否则您将只有一个NA
),但您比test
多了一行,所以这是您想要的答案。因此我承认它在内部可能的工作方式是(因为缺少更好的词)将numbers
和numbers2
合并到一个输出中,但它并没有执行它所说的操作:它从x返回所有非键列,从y返回所有非键列,并返回一个键,该键是3列,而不是4列。为了获得我需要的信息,我需要像这样修改test2
<代码>测试2我只是觉得奇怪,它在返回x中的所有行,以及x和y中的所有列时出现矛盾
numbers letters letters2
1 1 a a
2 2 b <NA>
3 3 c <NA>