R - 有条件地用另一个数据框中的值替换值

R - Conditionally replacing values with values from another dataframe

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

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

我想在 bulk.df 中添加一个深度列,并使用与列在 meta.df。我复制了 bulk.df$site 并将其重命名为 depth 希望找到一种方法来有条件地用 meta.df 的深度替换此列中的站点编号。

感谢建议!

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

library(dplyr)

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

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

选项base R

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