我是 R 新手(以前使用过 MATLAB)并且已经尝试了很长时间来寻找解决方案,但我找不到这个(看似)非常简单的问题的解决方案。这是问题所在;
在第一列中,我有几天的时间值(在此示例中进行了简化),在第二列中,我有我想要平均的值。我想要做的是取所有属于同一时间的值并取平均值。我在相当大的数据集上执行此操作,因此自动执行此操作将有很大帮助。
让我们设置:
time = rep( c("00:00", "00:10", "00:20", "00:30", "00:40", "00:50", "01:00", "01:10"), 5)
values = c(sample(1:100, 40))
data = cbind(time, values)
所以现在我有我的矩阵,其中包含时间和值,我想将所有具有(例如)“00:00”的值分组并计算它的平均值。经过一番搜索,我发现该aggregate()
功能可以提供很好的帮助,所以我做了以下事情;
aggregate(as.numeric(data[,-1]), by = list(sort(data[,1])), mean)
有输出
Group.1 x
1 00:00 77.2
2 00:10 59.2
3 00:20 51.0
4 00:30 49.4
5 00:40 51.4
6 00:50 33.4
7 01:00 33.8
8 01:10 51.6
所以它似乎工作得很好,但是当我手动计算它时,值的平均值都是不同的。(例如;对于 00:00:(56+3+91+71+8)/5 = 45.8 而不是 77.2),谁能告诉我我做错了什么?