library(tidyverse)
(mydf <- tibble::tribble(
~id, ~id_row, ~number_of_tests, ~species,
1L, 1L, 2L, "avium",
1L, 2L, 2L, "avium",
2L, 1L, 1L, "kansasii",
3L, 1L, 1L, "gordonae",
4L, 1L, 4L, "avium",
4L, 2L, 4L, "avium",
4L, 3L, 4L, "avium",
4L, 4L, 4L, "gordonae",
5L, 1L, 1L, "avium"
))
mydf |>
group_by(id) |>
mutate(not_same_species =
as.integer(length(unique(species)) != 1))