Вот решение.Обратите внимание, что когда параметр scan_id не является ни 00001, ни 00002, размер будет «маленьким»:
library(dplyr)
df_clean <- df %>%
mutate(size = ifelse(grepl("00001", scan_id), "big", "small")) %>%
mutate(size = ifelse(grepl("00002", scan_id), "medium", size)) %>%
mutate(size = ifelse(grepl("00003", scan_id), "small", size))
> df_clean
scan_id sample size
1 s10w_00001 1 big
2 s10w_00002 2 medium
3 s10w_00003 3 small
4 s10w_00004 4 extra small
5 s11d_00001 5 big
6 s11d_00002 6 medium
7 s11d_00003 7 small
8 s11d_00004 8 extra small
9 s11w_00001 9 big
10 s11w_00002 10 medium
11 s11w_00003 11 small
Данные
Обычно вы должны предоставлять данные с dput
, который преобразует ваш data.frame в текстэто легко прочитать. Вот данные, которые я использовал:
df <- read.table(text =
"scan_id sample
1 s10w_00001 1
2 s10w_00002 2
3 s10w_00003 3
4 s10w_00004 4
5 s11d_00001 5
6 s11d_00002 6
7 s11d_00003 7
8 s11d_00004 8
9 s11w_00001 9
10 s11w_00002 10
11 s11w_00003 11", header = TRUE)