我有一个等级表:
Apple 1
Banana 2
Orange 3
... 40
其中1是最高的,40是最低的。
我正在从另一个源中提取包含 1 到 4 个条目的向量,例如
c(apple,orange)
c(apple,banana,orange)
c(orange)
我想将这些向量与等级相匹配,因此 c(orange) 很容易,等级 =3 但 c(apple,banana,orange) 应该从所有值中接收最低范围,因此在本例中为 3。
任何建议表示赞赏。
大概是这样的?
tab <- data.frame(
fruit = c("apple","banana","orange"),
rank = 1:3
)
# fruit rank
#1 apple 1
#2 banana 2
#3 orange 3
vec1 <- c("apple","orange")
vec2 <- c("apple","banana","orange")
vec3 <- c("orange")
tab$rank[max(match(vec1,tab$fruit))]
#[1] 3
tab$rank[max(match(vec2,tab$fruit))]
#[1] 3
tab$rank[max(match(vec3,tab$fruit))]
#[1] 3
例如
# let tab = your table
x <- c(apple,banana,orange)
lowest.rank <- min(sapply(x, function(x) tab[names(tab)==x])