Поскольку вы упомянули gsub()
, я предположил, что вы хотите придерживаться базы R.
Здесь я создаю две новые переменные на основе случайно сгенерированных названий видов, которые, я думаю, соответствуют вашему запросу.
"(" является специальным символом и поэтому должен экранироваться с помощью "\", но поскольку "\" сам по себе является специальным символом, вы должны экранировать его другим "\", в результате чего получаются символы "\\".
"" соответствует любому одному символу, а "*" - это квантификатор, который говорит, что соответствует 0 или более.
«$» обозначает конец строки.
[0-9] соответствует одному целому числу.
"+" - это другой квантификатор, который говорит, что он соответствует одному или нескольким.
Таким образом, имеем:
set.seed(42)
df <- data.frame(species_name = paste0("species ",
sample(LETTERS, 10),
" name(",
sample(1:10),
") V",
sample(1:10)))
df$species_name1 <- gsub("\\(.*$", "", df$species_name)
df$species_name2 <- gsub("\\([0-9]*\\)", "", df$species_name)
df
Который производит:
species_name species_name1 species_name2
1 species Q name(9) V4 species Q name species Q name V4
2 species E name(5) V5 species E name species E name V5
3 species A name(6) V7 species A name species A name V7
4 species J name(4) V9 species J name species J name V9
5 species D name(2) V8 species D name species D name V8
6 species R name(8) V10 species R name species R name V10
7 species Z name(3) V2 species Z name species Z name V2
8 species O name(7) V3 species O name species O name V3
9 species G name(1) V6 species G name species G name V6
10 species V name(10) V1 species V name species V name V1