R语言中基于共享值将数据框列值复制到另一个数据框
在R中匹配两个数据框的状态码
首先先还原你的两个数据框(可直接复制运行测试):
# 包含状态码的数据框 df_status <- data.frame( taxon = c("Acer tom", "Carex geoff", "Carex bob", "Poa paul", "Juncus john"), status = c("LC", "EX", "LC", "LC", "WL"), stringsAsFactors = FALSE ) # 仅含物种列表的数据框 df_taxa <- data.frame( taxon = c("Acer tom", "Carex clive", "Carex bob", "Poa paul", "Luzula luke"), stringsAsFactors = FALSE )
方法1:Base R原生merge()函数
通过左连接保留第二个数据框的所有行,匹配第一个数据框的状态码,不匹配的自动填充NA:
result <- merge(df_taxa, df_status, by = "taxon", all.x = TRUE)
运行后得到的结果:
taxon status 1 Acer tom LC 2 Carex clive <NA> 3 Carex bob LC 4 Poa paul LC 5 Luzula luke <NA>
方法2:tidyverse系列的dplyr::left_join()
如果你习惯使用tidyverse工具链,left_join()逻辑更直观:
library(dplyr) result <- df_taxa %>% left_join(df_status, by = "taxon")
输出结果与Base R方法完全一致。
内容的提问来源于stack exchange,提问作者King Balloonion
相关产品推荐
相关产品推荐

