0

我有一个等级表:

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。

任何建议表示赞赏。

4

2 回答 2

1

大概是这样的?

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
于 2013-09-25T00:01:17.750 回答
-1

例如

# let tab = your table
x <- c(apple,banana,orange)
lowest.rank <- min(sapply(x, function(x) tab[names(tab)==x])
于 2013-09-25T05:23:37.623 回答