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 仅 site
和 depth
列并将其连接到 bulk.df
,使用公共列 site
作为key映射两个表。
选项base R
merge(bulk.df, meta.df[c('site', 'depth')], by = 'site', all.x = TRUE)
我在 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 仅 site
和 depth
列并将其连接到 bulk.df
,使用公共列 site
作为key映射两个表。
选项base R
merge(bulk.df, meta.df[c('site', 'depth')], by = 'site', all.x = TRUE)