我正在使用R作为我的统计数据但是我在解决如何执行以下操作时遇到了一些问题:假设我的数据集如下所示。这些是我写的程序的基准测试结果。我有多个具有相同参数的运行来平衡我的结果。下面显示的数据实际上只是一组的副本。这只是为了清楚我的意思。例如,我可以有两个这样的记录:
threadcount; cachesize; requestspersecond;
100; 50; 1234;
100; 50; 5678;
所以,我想要实现的是一个显示100个线程的图,requestspersecond
等于3456。
要为每个参数执行1次运行时绘制数据,请执行以下操作:
plot(entireDataSet$threadcount, entireDataSet$requestspersecond, type="s")
我环顾四周寻找一种带有某种for循环的解决方案,但我似乎无法找到任何解决方案。
我可以手动平均所有结果,但这似乎与使用R。
相矛盾有人能指出我正确的方向吗?
threadcount; cachesize; requestspersecond;
0; 50; 0;
100; 50; 591880;
200; 50; 550766;
300; 50; 514453;
400; 50; 746907;
500; 50; 282650;
600; 50; 418783;
700; 50; 1048451;
800; 50; 606281;
900; 50; 563941;
1000; 50; 481376;
0; 50; 0;
100; 50; 591880;
200; 50; 550766;
300; 50; 514453;
400; 50; 746907;
500; 50; 282650;
600; 50; 418783;
700; 50; 1048451;
800; 50; 606281;
900; 50; 563941;
1000; 50; 481376;
答案 0 :(得分:4)
使用aggregate
为您选择的每个组合创建统一数据框,如下所示:
agg_df <- aggregate(x=list(RPS=entireDataSet$requestspersecond),
by=list(Threadcount=entireDataSet$threadcount),
FUN=mean)
plot(agg_df$Threadcount,
agg_df$RPS,
type="s")
答案 1 :(得分:3)
除了基础R的aggregate
之外,还有其他几个选项:
1: plyr
包:
library(plyr)
new.df <- ddply(entireDataSet, .(threadcount), summarise, rps = mean(requestspersecond))
2: dplyr
包:
library(dplyr)
new.df <- entireDataSet %>%
group_by(threadcount) %>%
summarise(rps = mean(requestspersecond))
3: data.table
包:
library(data.table)
new.df <- setDT(entireDataSet)[, .(rps = mean(requestspersecond)), by = threadcount]
答案 2 :(得分:1)
您可以使用aggregate
获取数据集中每个requestspersecond
的平均值threadcount
吗?