Без воспроизводимого примера трудно быть уверенным, что этот ответ будет правильным.
Однако, исходя из этого фиктивного примера:
set.seed(123)
df <- data.frame(Var = c(paste0("HPV_",11:15,"_ALL"),paste0("BPV_",11:15,"_ALL")),
Val = sample(1:100,10))
Var Val
1 HPV_11_ALL 31
2 HPV_12_ALL 79
3 HPV_13_ALL 51
4 HPV_14_ALL 14
5 HPV_15_ALL 67
6 BPV_11_ALL 42
7 BPV_12_ALL 50
8 BPV_13_ALL 43
9 BPV_14_ALL 97
10 BPV_15_ALL 25
Вы можете получить строки, соответствующие для "HPV_xx_ALL", выполнив:
grep("HPV_\\d{2}_ALL",df$Var, perl = TRUE)
[1] 1 2 3 4 5
Таким образом, вы можете получить сумму строк, соответствующих искомому шаблону, выполнив:
sum(df[grep("HPV_\\d{2}_ALL",df$Var, perl = TRUE),"Val"])
[1] 242
Если ваш шаблон HPV_xx_ALL
являются названиями столбцов, вы можете сделать то же самое, выполнив:
rowSums(df[,grep("HPV_\\d{2}_ALL", names(df), perl = TRUE)]
Это отвечает на ваш вопрос? Если нет, пожалуйста, предоставьте воспроизводимый пример вашего набора данных (см .: Как создать великолепный воспроизводимый пример R )