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)