R:按公共列合并两个数据帧

Lei*_*Lei 4 merge r

我有两个data.frames,"x"和"y"."x"和"y"具有不同的列数.如下:

x
  A1 A3 A5 A6
1  a  b  b  a

y
   A1 A2 A3 A4 A5 A6 A7
1   9 10 11  9 10 10 10
2   0  6  2  2  8  1  4
3   0  4  0  1  0  0  0
4  12 12 12 12 12 12 11
5  11 11  9 12 12 11 11
6   0  0  0  0  0  1  0
Run Code Online (Sandbox Code Playgroud)

我想创建一个新的data.frame,只有两个data.frames的公共列.而这个新data.frame的内容只来自"y".最终的data.frame应如下所示:

  A1 A3 A4 A6
1  9 11  9 10
2  0  2  2  1
3  0  0  1  0
4 12 12 12 12
5 11  9 12 11
6  0  0  0  1
Run Code Online (Sandbox Code Playgroud)

这些都是例子.实际上,我的真实data.frames中有数百列.有谁知道怎么做?

use*_*710 8

试试这个:

 y[,colnames(y) %in%colnames(x)]
  A1 A3 A5 A6
1  9 11 10 10
2  0  2  8  1
3  0  0  0  0
4 12 12 12 12
5 11  9 12 11
6  0  0  0  1
Run Code Online (Sandbox Code Playgroud)


jos*_*ber 6

你可以索引y由列名x,并y有共同的:

y[,intersect(names(x), names(y))]
#   A1 A3 A5 A6
# 1  9 11 10 10
# 2  0  2  8  1
# 3  0  0  0  0
# 4 12 12 12 12
# 5 11  9 12 11
# 6  0  0  0  1
Run Code Online (Sandbox Code Playgroud)