Hi!
A tidyverse solution would be:
library(tidyverse)
test <- data.frame(
stringsAsFactors = FALSE,
species = c("Bubasis agape agape",
"Bubasis agape","Bubasis agape","Bubasis agape",
"Bubasis agape ruby","Bubasis agape ruby","Bubasis agape ruby",
"Bubasis agape")
)
test %>%
as_tibble() %>%
mutate(
species_clean = map_chr(
str_split(species, pattern = "\\s+"),
~ str_flatten(.x[1:2], " ")))
#> # A tibble: 8 × 2
#> species species_clean
#> <chr> <chr>
#> 1 Bubasis agape agape Bubasis agape
#> 2 Bubasis agape Bubasis agape
#> 3 Bubasis agape Bubasis agape
#> 4 Bubasis agape Bubasis agape
#> 5 Bubasis agape ruby Bubasis agape
#> 6 Bubasis agape ruby Bubasis agape
#> 7 Bubasis agape ruby Bubasis agape
#> 8 Bubasis agape Bubasis agape
Created on 2022-03-01 by the reprex package (v2.0.1)