【问题标题】:For data.frame in R, pulling data from one data frame based on values from another data frame对于 R 中的 data.frame,根据来自另一个数据帧的值从一个数据帧中提取数据
【发布时间】:2014-07-01 13:58:16
【问题描述】:

对不起,如果这真的很简单,但我一直在努力寻找几个小时的答案。我有两个数据框,每个数据框都包含几列,下面是类似情况的示例(实际数据框非常大而且很麻烦)。

第一个数据帧

    "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 匹配。我认为合并可能会有所帮助,但当我尝试时,它只是将 Location 列添加到第一个数据框中。

【问题讨论】:

标签: r merge dataframe


【解决方案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。

【讨论】:

  • 对不起,我觉得自己太笨了,这成功了。感谢您的快速响应和对我对 R 的无知的耐心。
【解决方案2】:

您也可以使用dplyr 中的inner_join。如果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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-24
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 2017-11-10
    • 2019-08-20
    • 1970-01-01
    相关资源
    最近更新 更多