R通过两个变量组合数据帧

时间:2013-10-01 12:42:09

标签: r

我有两个数据集,一个包含X和Y数据,一个包含X Y和Z数据。我希望对X,Y,Z数据进行子集化,只保留与第一组X和Y的线匹配的行。

示例:

X  Y            
1  1            
1  4            
2  7


X  Y  Z               
1  1 24                 
1  2 30  
1  4 15   
2  2 40    
2  5 10    
2  7 12  

我想将这些结合起来只返回:

X  Y  Z    
1  1 24    
1  4 15    
2  7 12  

非常感谢任何想法。

2 个答案:

答案 0 :(得分:1)

请参阅?merge

R> x <- read.table(textConnection("
X Y
1 1
1 4
2 7"), header=TRUE)

R> y <- read.table(textConnection("
X Y Z
1 1 24
1 2 30
1 4 15
2 2 40
2 5 10
2 7 12"), header=TRUE)

R> merge(x, y, all=FALSE)
  X Y  Z
1 1 1 24
2 1 4 15
3 2 7 12

答案 1 :(得分:0)

> file
  X Y  Z
1 1 1 24
2 1 2 30
3 1 4 15
4 2 2 40
5 2 5 10
6 2 7 12
> x
first second
1     1      1
2     1      4
3     2      7
> merge(x, file, by.x=x$first, by.y = file$X)
  first second  Z
1     1      1 24
2     1      4 15
3     2      7 12