R中的每秒统计数据

时间:2012-07-05 17:36:46

标签: r histogram

我有一个包含这样的时间戳的文件:

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)

2 个答案:

答案 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.tableplyr个包以进行此类聚合。

每个群组的maxmin非常容易。如果您只想要系列的maxmin,则可以直接使用这些功能

> max(x)
[1] 2.890879
>