Если мы хотим сделать это векторизованным
percentage <- mydata[-c(1, 7)]/mydata$total
percentage
# a b c d e
#1 0.07155907 0.8672351 0.05991169 7.612667e-05 0.001218027
#2 0.10236096 0.8518460 0.04420852 7.922675e-05 0.001505308
#3 0.13270216 0.8194164 0.04609654 7.760360e-05 0.001707279
#4 0.07483147 0.8465417 0.02277233 1.302895e-03 0.054551634
#5 0.01887611 0.8461705 0.02581905 2.495118e-03 0.106639184
Если мы проверяем сумму элементов для вычисления процента
rowSums(mydata[-c(1, 7)])/mydata$total
data
mydata <- structure(list(Group.1 = c("test1", "test2", "test3", "test4",
"test5"), a = c(470, 646, 855, 660.5, 87), b = c(5696, 5376,
5279.5, 7472, 3900), c = c(393.5, 279, 297, 201, 119), d = c(0.5,
0.5, 0.5, 11.5, 11.5), e = c(8, 9.5, 11, 481.5, 491.5), total = c(6568,
6311, 6443, 8826.5, 4609)), class = "data.frame", row.names = c("1",
"2", "3", "4", "5"))