对于R中的data.frame,基于来自另一个数据帧的值从一个数据帧中提取数据

时间:2014-07-01 13:58:17

标签: r merge dataframe

很抱歉,如果这很简单,但我一直试图找到答案几个小时。我有两个数据框,每个数据框包含几个列,下面是类似情况的示例(实际数据帧非常大且繁琐)。

第一个数据框

    "GPS_ID" "Object_ID" "DBH_cm"
     1        19426       15
     2        9456        9
     3        19887       11
     5        18765       4 
     6        9322        7

第二个数据框

    "Location" "ID"
     block 1    9456
     block 2    18765
     block 2    9322

我需要创建一个新对象,该对象只有第二个数据帧中的ID与第一个数据帧中对应的DBH_cm相匹配。我认为合并可能会有所帮助,但是当我尝试它时,它只是将位置列添加到第一个数据框。

2 个答案:

答案 0 :(得分:1)

如果我正确理解您的最终输出,merge函数应该是您所需要的:

> merge(x,y, by.x = "Object_ID", by.y = "ID")
  Object_ID GPS_ID DBH_cm Location
1      9322      6      7  block_3
2      9456      2      9  block_1
3     18765      5      4  block_2

您可以通过删除不需要的列来进一步编辑新的data.frame。

答案 1 :(得分:0)

您还可以使用inner_join中的dplyr。如果xy是两个数据集

 library(dplyr)
 colnames(y)[2] <- colnames(x)[2]
 inner_join(x,y, by="Object_ID")
 #  GPS_ID Object_ID DBH_cm Location
 # 1      2      9456      9  block 1
 # 2      5     18765      4  block 2
 # 3      6      9322      7  block 2