Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回联接条件(dplyr)中指定的所有列_R_Dplyr - Fatal编程技术网

返回联接条件(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已经包含

如果我有两个数据帧,并使用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
已经包含在结果数据帧中的
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>