我有一个包含这样的时间戳的文件:
0.000100
0.003890
0.567980
0.999000
0.999990
1.000010
1.236800
1.456098
1.989001
2.098710
2.309879
2.890879
我想找到每秒的统计数据,比如在第一秒中:5个值,第二个秒:4,第三个第二个3在上面的文件中使用R.我还希望找到每秒平均值,最大值在所有所有秒钟中的秒数和最小值。如何使用R提取这些?我是R的新手,还在学习。我知道如何在直方图中绘制这些图,但不知道如何提取值。
数据:
x <- c(0.0001, 0.00389, 0.56798, 0.999, 0.99999, 1.00001, 1.2368, 1.456098,
1.989001, 2.09871, 2.309879, 2.890879)
答案 0 :(得分:3)
您还可以使用剪切功能创建一个因子(时间范围),然后以类似于Justin如何使用聚合的方式使用:
y <- data.frame(val=x, time=cut(x, 0:round(max(x))))
aggregate(val~time, y, length)
aggregate(val~time, y, mean)
或创建自己的功能并一举做到:
funner <- function(x){
c(mean=mean(x), n=length(x), min=min(x), max=max(x), sd=sd(x))
}
aggregate(val~time, y, funner)
得到以下特性:
> aggregate(val~time, y, funner)
time val.mean val.n val.min val.max val.sd
1 (0,1] 0.5141920 5.0000000 0.0001000 0.9999900 0.4996575
2 (1,2] 1.4204773 4.0000000 1.0000100 1.9890010 0.4223025
3 (2,3] 2.4331560 3.0000000 2.0987100 2.8908790 0.4102205
答案 1 :(得分:2)
您可以使用整数数学执行此操作:
x <- c(1e-04, 0.00389, 0.56798, 0.999, 0.99999, 1.00001, 1.2368, 1.456098,
1.989001, 2.09871, 2.309879, 2.890879)
> aggregate(x, list(x %/% 1), mean)
Group.1 x
1 0 0.514192
2 1 1.420477
3 2 2.433156
>
我还建议您查看data.table
和plyr
个包以进行此类聚合。
每个群组的max
和min
非常容易。如果您只想要系列的max
或min
,则可以直接使用这些功能
> max(x)
[1] 2.890879
>