Вы также можете сделать это довольно легко, используя библиотеку data.table
library(data.table)
df <- data.table(Date = as.Date(c(rep('2016-04-02',2), rep('2016-04-17',2), rep('2016-09-18',3))), Species = c('Wild Sheep-M', 'Wild Sheep-F', 'Feral Goat-M', 'Feral Goat-F', 'Wild Sheep-M', 'Wild Sheep-F','Wild Sheep-J'), Area.1.Harvest = c(1,4,NA,NA,NA,NA,NA), Area.2.Harvest = c(NA,NA,5,3,6,1,1), Effort = c(30, 30, 50, 50, 60, 60, 60))
df[,Species := substr(Species,1,nchar(Species)-2)][,.(Area.1.Harvest = sum(Area.1.Harvest, na.rm=TRUE),
Area.2.Harvest = sum(Area.2.Harvest, na.rm=TRUE),
Effort = mean(Effort, na.rm=TRUE)), by=list(Date, Species)]
# Date Species Area.1.Harvest Area.2.Harvest Effort
#1: 2016-04-02 Wild Sheep 5 0 30
#2: 2016-04-17 Feral Goat 0 8 50
#3: 2016-09-18 Wild Sheep 0 8 60