Не проверял, но идея примерно такая,)
/* CALCULATION */
function calc() {
let result = 0;
// здесь будем хранить результаты подсчетов для graph
let graphs = {
}
for (let i = 0; i < qs.length; i++) {
let q = qs[i];
let s = 0;
let c = 0;
for (let j = 0; j < q.answer.length; j++) {
let a = q.answer[j];
if (a.input.checked) {
// сохраним в graph какие-то вычисления
if (!graphs[q.graph]) {
graphs[q.graph] = {}
graphs[q.graph].value = parseInt(a.input.value)
graphs[q.graph].count = 1
} else {
graphs[q.graph].value += parseInt(a.input.value)
graphs[q.graph].count += 1
}
c++;
s += a.input.value * 1;
console.log(i, j, c, s)
}
}
if (c > 0) result += s / c;
// здесь объект graphs содержит сумму в value, и кол-во складываний в count для каждой graph
// Object.entries(graphs).forEach(([graphId, graph]) => {
// console.log(graphId, graph.value / graph.count)
// })
}
document.getElementById('result').textContent = result + '%';
}