Вы можете объединить два фрейма данных.
## Your example data
df.number <- matrix(c(1, 1, 3, 4, 5, 3, 3, 5, 40, 22), ncol = 2)
colnames(df.number) <- c("species", "number")
df.ratio <- matrix(c(1, 2, 3, 4, 5, 3, 5, 4, 2, 2), ncol = 2)
colnames(df.ratio) <- c("species", "ratio")
## Merge the two matrices
dat <- merge(df.number, df.ratio, by = "species")
## Multiply for your result
result <- with(dat, number * ratio)
Редактировать
@ Фрэнк: в своем комментарии к Джеймсу вы говорите, что результирующий кадр данных после слияния слишком длинный. Вы хотите удалить дублирующиеся строки? Если так:
dat2 <- subset(dat, subset = !duplicated(dat))
result2 <- with(dat2, number * ratio)