R 使用查找表填充多列

R 使用查找表填充多列,r,lookup,R,Lookup,我有九个不同的数据帧,我想对它们运行相同的查找测试 以下是九个数据帧中的两个 PIRO_PLS_Points <- structure(list(SPECIES1 = c("CE", "BE", "BE", "YB", "BF", "BE", "SU", "CE", "SU", "SU"), ComName1 = c(NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_charact

我有九个不同的数据帧,我想对它们运行相同的查找测试

以下是九个数据帧中的两个

PIRO_PLS_Points <- structure(list(SPECIES1 = c("CE", "BE", "BE", "YB", "BF", "BE", 
"SU", "CE", "SU", "SU"), ComName1 = c(NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_), Latin1 = c(NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_), 
    TSN1 = c(NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_), SPECIES2 = c("CE", "BE", "BE", 
    "YB", "BF", "BE", "BE", "SU", "SU", "SU"), ComName2 = c(NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_), Latin2 = c(NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_
    ), TSN2 = c(NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_), SPECIES3 = c(NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_), ComName3 = c(NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_
    ), Latin3 = c(NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_), TSN3 = c(NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_)), data_types = c("N", "N", "F", "F", "N", 
"N", "N", "F", "F", "C", "C", "N", "C", "C", "C", "C", "C", "C", 
"N", "C", "C", "C", "C", "C", "C", "C", "C", "C", "N", "C", "C", 
"C", "C", "C", "C", "C", "C", "C", "N", "C", "C", "C", "C", "C", 
"C", "C", "C", "C", "N", "C", "C", "C", "C", "C", "N", "C", "N", 
"N", "N", "C", "N", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
"N", "N", "C", "F", "F", "F", "F", "N", "N", "F", "F", "N", "N", 
"C", "C", "C", "C", "F", "F", "C"), .Names = c("SPECIES1", "ComName1", 
"Latin1", "TSN1", "SPECIES2", "ComName2", "Latin2", "TSN2", "SPECIES3", 
"ComName3", "Latin3", "TSN3"), row.names = c("1", "2", "3", "4", 
"5", "6", "7", "8", "9", "10"), class = "data.frame")
看起来:

     sp.list com.list latin.list tsn.list
[1,] "BE"    "bear"   "juglans"  "100203"
[2,] "YB"    "yellow" "quercus"  "999999"
[3,] "SU"    "supper" "fraxinus" "88888"

因此,最后我想填充
$ComName1
$Latin1
$TSN1
$ComName2
,等等。所有这些都基于
查找
表。我原以为查找表是最简单的方法,但我愿意接受其他建议。

可能最简单的方法是堆叠所有数据帧,然后在查找表上合并

dfs <- rbind(PIRO_PLS_Points, SLBE_PLS_Points, ...)
dfs$sp.list <- dfs$SPECIES1
merged <- merge(dfs, lookup)

dfs这只提供对规范1的查找。我想使用相同的查找来遍历并填写ComName2、Latin2、TSN2、ComName3等。您可以运行它三次,例如生成
merged_species1
merged_species2
,等等,然后
cbind()。但在这一点上,使用SQL可能会更好。
     sp.list com.list latin.list tsn.list
[1,] "BE"    "bear"   "juglans"  "100203"
[2,] "YB"    "yellow" "quercus"  "999999"
[3,] "SU"    "supper" "fraxinus" "88888"
dfs <- rbind(PIRO_PLS_Points, SLBE_PLS_Points, ...)
dfs$sp.list <- dfs$SPECIES1
merged <- merge(dfs, lookup)