Решение с использованием data.table
. Найти максимальное значение в столбцах 3:5
(столбцы оценки) с помощью ID
и Group
.
library(data.table)
setDT(d)
d[, .(Max = do.call(max, .SD)), .SDcols = 3:5, .(ID, Group)]
ID Group Max
1: a1 abc 11
2: a1 def 5
3: a2 def 11
Данные:
d <- structure(list(ID = structure(c(1L, 1L, 1L, 2L), .Label = c("a1",
"a2"), class = "factor"), Group = structure(c(1L, 1L, 2L, 2L), .Label =
c("abc",
"def"), class = "factor"), Score1 = c(10L, 0L, 0L, 5L), Score2 = c(0L,
0L, 5L, 10L), Score3 = c(0L, 11L, 2L, 11L)), class = "data.frame", row.names =
c(NA,
-4L))
Это очень странно, и я не получаю те же результаты, что и вы на моей машине. Я был бы очень удивлен, если бы ab выдавал разное количество фактических запросов.
Вещи, которые я бы попробовал:
ab -X localhost:8888 -n 100 -c 30 http://127.0.0.1:3000/test
будет использоваться прокси-сервер fiddler, который затем позволит вам увидеть фактические вызовы через сетевой интерфейс. подробнее Если после всего этого вы все еще находите проблему, то она сузилась до проблемы с узлом, я не уверен, что еще это может быть. Попробуйте использовать узел 8, а не 10.
Используя прокси-сервер Fiddler, я обнаружил, что инструмент AB запускается больше раз, чем количество запросов, которые нужно выполнить (пример: -n 200 ).
Запустив серию последовательных тестов:
# 11 consecutive times
/usr/bin/ab -n 200 -c 30 -X localhost:8888 http://localhost:3000/test
Прокси-сервер и сервер узлов сообщают о 2209 запросах. Похоже, что AB менее точен с прокси в середине, но все еще неточен.
В общем, и что более важно, я никогда не обнаруживал несоответствия между запросами, передаваемыми через прокси, и запросами, полученными сервером узла.
Спасибо!