Is there a way to obtain the annual count values based on the state, species, and year, without using a for loop?
Name    |  State   |  Age  | Species    | Annual Ct
Nemo    |  NY      |  5    | Clownfish  | ?
Dora    |  CA      |  2    | Regal Tang | ?
Lookup table:
State |  Species    | Year  | AnnualCt
NY    |  Clownfish  |  2012 |  500
NY    |  Clownfish  |  2014 |  200
CA    |  Regal Tang |  2001 |  400
CA    |  Regal Tang |  2014 |  680
CA    |  Regal Tang |  2000 |  700
The output would be:
Name  |  State |  Age | Species    | Annual Ct
Nemo  |  NY    |  5   | Clownfish  | 200
Dora  |  CA    |  2   | Regal Tang | 680
What I've tried:
pets <- data.frame("Name" = c("Nemo","Dora"), "State" = c("NY","CA"),
               "Age" = c(5,2), "Species" = c("Clownfish","Regal Tang"))
fishes <- data.frame("State" = c("NY","NY","CA","CA","CA"), 
                  "Species" = c("Clownfish","Clownfish","Regal Tang", 
                                "Regal Tang", "Regal Tang"),
                  "Year" = c("2012","2014","2001","2014","2000"),
                  "AnnualCt" = c("500","200","400","680","700"))
pets["AnnualCt"] <- NA
for (row in (1:nrow(pets))){
pets$AnnualCt[row] <- as.character(droplevels(fishes[which(fishes$State == pets[row,]$State & 
                                   fishes$Species == pets[row,]$Species & 
                                   fishes$Year == 2014), 
                           which(colnames(fishes)=="AnnualCt")]))
}
 
    