繁体   English   中英

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

[英]R - Conditionally replacing values with values from another dataframe

我在 R 中工作,我有一个非常大的数据bulk.df ( 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数据meta.df ,仅选择列sitedepth并将其连接到bulk.df ,使用公共列site作为映射两个表的键。

带有base R的选项

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM