Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.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
R 将两个向量与公共元素对齐_R_Join - Fatal编程技术网

R 将两个向量与公共元素对齐

R 将两个向量与公共元素对齐,r,join,R,Join,我有两个向量,其中一些元素是公共的: v1= c('a', 'b', 'c') v2 = c('b', 'c', 'd') 我想把向量组合成两个data.frames。在第一个示例中,我希望两个向量中的所有元素,并且两个向量中的不匹配位置应替换为NA: 在第二个数据帧中,我想要第一个向量中的元素和第二个向量中的对应匹配: v1 v2 a NA b b c c 最好的方法是什么?第一种 mergedf=merge(data.frame('key'=v1,v1),data.

我有两个向量,其中一些元素是公共的:

v1= c('a', 'b', 'c')
v2 = c('b', 'c', 'd')
我想把向量组合成两个data.frames。在第一个示例中,我希望两个向量中的所有元素,并且两个向量中的不匹配位置应替换为NA:

在第二个数据帧中,我想要第一个向量中的元素和第二个向量中的对应匹配:

v1   v2
a    NA
b    b
c    c
最好的方法是什么?

第一种

mergedf=merge(data.frame('key'=v1,v1),data.frame('key'=v2,v2),by='key',all=T)
mergedf
  key   v1   v2
1   a    a <NA>
2   b    b    b
3   c    c    c
4   d <NA>    d
获得第二个df

mergedf[!is.na(mergedf$v1),]
  key   v1   v2
1   a    a <NA>
2   b    b    b
3   c    c    c
4   d <NA>    d
拿第一个

mergedf=merge(data.frame('key'=v1,v1),data.frame('key'=v2,v2),by='key',all=T)
mergedf
  key   v1   v2
1   a    a <NA>
2   b    b    b
3   c    c    c
4   d <NA>    d
获得第二个df

mergedf[!is.na(mergedf$v1),]
  key   v1   v2
1   a    a <NA>
2   b    b    b
3   c    c    c
4   d <NA>    d

可以选择基于dplyr的解决方案。您可以将完全联接和左联接用作:


可以选择基于dplyr的解决方案。您可以将完全联接和左联接用作:


您缺少了一个逗号mergedf[!is.namergedf$v1,]。有更好的方法吗?我有这样的感觉,但不知道如何…你缺少了一个逗号,mergedf[!is.namergedf$v1,],有没有更好的方法?我有这种感觉,但不知道如何。。。