aggregate
выполнит трюк:
dif <- aggregate(df$value, list(df$time), function(x) abs(diff(abs(x))))
dif <- data.frame(condition = "Diff", time = dif[,1], value = dif[,2])
dif <- rbind(df, dif)
dif
condition time value
1 A 1 -2
2 B 1 3
3 A 2 5
4 A 3 1
5 B 2 1
6 B 3 6
7 Diff 1 1
8 Diff 2 4
9 Diff 3 5
Причина - простая ошибка, часто совершаемая в jQuery. Ваш код интерпретируется при первой загрузке страницы, все последующие изменения в DOM игнорируются. Существует простой способ всегда интерпретировать все итоги. Сделайте «тело», чтобы найти все «итоги».
function sum_of_total(num) {
var sum = 0;
//iterate through each textboxes and add the values
$("body").find(".total").each(function() {
//add only if the value is number
if (!isNaN($(this).val()) && $(this).val().length != 0) {
sum += parseFloat(this.value);
}
});
//.toFixed() method will roundoff the final sum to 2 decimal places
$("#grandtotal-" + num).val(sum);
}
рабочая скрипка: https://jsfiddle.net/juf54wby/