(К сожалению, мне не хватает базового словарного запаса для формулировки моего вопроса. Поэтому, пожалуйста, исправьте меня, где более точные термины полезны.)
Я использую R для проведения базового статистического анализа для результатов тестирования виртуальных машин.и я часто хочу нормализовать свои данные на основе какого-то критерия.
В настоящее время моя проблема заключается в том, что я хотел бы, чтобы что-то вроде следующего работало:
normalized_data <- ddply(bench, ~ Benchmark + Configuration + Approach,
transform,
Ratio = Time / Time[Approach == "appr2"])
Итак, что я действительно хочупредназначен для расчета ускорения между соответствующими парами измерений.
bench
- это фрейм данных со столбцами Time, Benchmark, Configuration and Approach и содержит 100 измерений для всех возможных комбинаций Benchmark, Configuration and Approach,Теперь я получил ровно два подхода и хочу ускорить "appr2" / "appr1".Таким образом, просто глядя на один конкретный тест и одну конкретную конфигурацию, у меня есть 100 измерений для «appr1» и 100 «appr2» в моем фрейме данных.Однако R выдает мне следующую ошибку, полученную в результате запроса на выдачу:
Error in data.frame(list(Time = c(405.73, 342.616, 404.484, 328.742, 403.384, :
arguments imply differing number of rows: 100, 0
В идеале результатом моего запроса будет новый фрейм данных с тремя столбцами SpeedUp, Benchmark, Configuration.Исходя из этого, я мог бы тогда рассчитать средние значения, доверительные интервалы и т. Д.
Но на данный момент основная проблема заключается в том, как выразить такую нормализацию.Для другого набора данных мне удалось вычислить нормализованное значение, подобное этому Time.norm = Time / Time[NumCores == min(NumCores)]
, но, похоже, это сработало случайно, по крайней мере я не понимаю разницы.
Любые подсказки приветствуются.(Особенно правильная терминология для поиска решений таких проблем.)
Редактировать: Благодаря подсказке Чейза, здесь минимальный набор данных, который должен быть структурно идентичен тому, что я получил, и он демонстрирует то же поведение суважение к запросу выше.
bench <- structure(list(Time = c(399.04, 388.069, 401.072, 361.646),
Benchmark = structure(c(1L, 1L, 1L, 1L), .Label = c("Fibonacci"), class = "factor"),
Configuration = structure(c(1L, 1L, 1L, 1L), .Label = c("native"), class = "factor"),
Approach = structure(c(1L, 1L, 2L, 2L), .Label = c("appr1", "appr2"), class = "factor")),
.Names = c("Time", "Benchmark", "Configuration", "Approach"),
row.names = c(NA, 4L), class = "data.frame")