Me gustaría usar R para trazar los resultados de evaluación de rendimiento de distintos sistemas de bases de datos. Para cada sistema cargué los mismos datos y ejecuté las mismas consultas en varias iteraciones.calcule el promedio sobre varias tramas de datos
Los datos para una sola sistemas se ve así:
"iteration", "lines", "loadTime", "query1", "query2", "query3"
1, 100000, 120.4, 0.5, 6.4, 1.2
1, 100000, 110.1, 0.1, 5.2, 2.1
1, 50000, 130.3, 0.2, 4.3, 2.2
2, 100000, 120.4, 0.1, 2.4, 1.2
2, 100000, 300.2, 0.2, 4.5, 1.4
2, 50000, 235.3, 0.4, 4.2, 0.5
3, 100000, 233.5, 0.7, 8.3, 6.7
3, 100000, 300.1, 0.9, 0.5, 4.4
3, 50000, 100.2, 0.4, 9.2, 1.2
Lo que necesito ahora (para el trazado) es un marco de matriz o de datos que contiene el promedio de estas mediciones.
En el momento que estoy haciendo esto:
# read the file
all_results <- read.csv(file="file.csv", head=TRUE, sep=",")
# split the results by iteration
results <- split(all_results, all_results$iteration)
# convert each result into a data frane
r1 = as.data.frame(results[1])
r2 = as.data.frame(results[2])
r3 = as.data.frame(results[3])
# calculate the average
(r1 + r2 +r3)/3
pude poner todo esto en una función y calcular la matriz de la media en un bucle, pero tengo la vaga sensación de que tiene que haber una más elegante solución. ¿Algunas ideas?
¿Qué puedo hacer para los casos en que tengo resultados incompletos, por ejemplo, cuando una iteración tiene menos filas que las otras?
Gracias!
que es de hecho más elegante que para bucles ... gracias por la pista. – behas
¿Qué sucede si quiero incluir la columna "líneas" en el marco de salida de ddply? Podría hacer eso simplemente calculando la media también sobre las líneas; pero esto de alguna manera no tiene sentido ya que los números de línea son valores estáticos; – behas
Veo lo que quiere decir, ¡pero supongo que no hay nada malo en tomar la "media" de un montón de valores idénticos! –