Вам просто нужно отправить кадр данных по нужным столбцам, а затем применить функцию rowMeans()
.
df <- data.frame(A1=c(1,2),A2=c(3,4),A3=c(5,6),A4=c(7,7),A5=c(8,8),A6=c(9,9))
colnames(df)<- c("A","A","B","B","B","C")
rowSums(df[,which(colnames(df) %in% c("A","B"))])
#[1] 24 27
Однако, как указал r2evans в комментарии, вам следует избегать столбцов с одинаковыми именами. Вы просто хотите получить положение столбцов, которые определяют начало и конец числа столбцов между и подмножеством.
colnames(df) <- c(paste0("A",1:2), paste0("B", 1:3), "C1")
strt <- which(colnames(df) == "A1")
end <- which(colnames(df) == "B3")
columrange <- strt:end
rowSums(df[,columrange])
#[1] 24 27
Существует множество способов подмножества имен столбцов. Если вы не переименовали свои столбцы в своем примере, вы можете использовать grepl()
, чтобы найти их:
df[,grepl("A",colnames(df)) | grepl("B",colnames(df))]
# A1 A2 B1 B2 B3
#1 1 3 5 7 8
#2 2 4 6 7 8