【问题标题】:R - Conditionally replacing values with values from another dataframeR - 有条件地用来自另一个数据帧的值替换值
【发布时间】:2020-10-12 20:43:34
【问题描述】:

我在 R 中工作,我有一个非常大的数据框 (bulk.df),其中有一列是物种 ID (species),一列是调查地点编号 (site)。每个站点有数百个观测值,有 25 个站点,因此有数千行。

我还有一个单独的数据框 (meta.df),其中包含 25 个站点中每个站点的元数据,包括调查深度 (depth) 以及站点编号列 (site)。

我想在 bulk.df 中添加一个深度列,并使用与 meta.df 中列出的每个站点关联的深度信息自动填充该列。我复制了bulk.df$site 并将其重命名为depth,希望能找到一种方法有条件地将本列中的站点编号替换为meta.df 的深度。

建议赞赏!

【问题讨论】:

  • 请您使用dput(head(bulk.df))dput(head(meta.df)) 并编辑您的帖子以包含输出。谢谢。

标签: r dataframe replace metadata autofill


【解决方案1】:

base R 的选项

merge(bulk.df, meta.df[c('site', 'depth')], by = 'site', all.x = TRUE)

【讨论】:

    【解决方案2】:

    只需使用 dplyr::left_join 完成该任务

    library(dplyr)
    
    final.df <- bulk.df %>%
      left_join(
        meta.df %>% select(site, depth),
        by = "site"
      )
    

    这将采用 meta.df 数据框,仅选择列 sitedepth 并将其连接到 bulk.df,使用公共列 site 作为映射两个表的键。

    【讨论】:

    • 很高兴听到!如果它解决了您的问题,请随时投票或接受答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多