3

次のようなタイムスタンプを含むファイルがあります。

0.000100
0.003890
0.567980
0.999000
0.999990
1.000010
1.236800
1.456098
1.989001
2.098710
2.309879
2.890879 

上記のファイルでRを使用して、1秒あたりの統計を1秒あたり5の値、2秒目:4、3秒目3のように検索したい。また、1秒あたりの平均値、すべての秒の最大値、最小値を検索したいすべての秒の値。これらは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)
4

2 に答える 2

3

また、cut 関数を使用して因子 (時間範囲) を作成し、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
于 2012-07-05T17:50:57.177 に答える
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

各グループのmaxandminは、かなり簡単に続きます。maxシリーズのまたはだけが必要な場合minは、これらの関数を直接使用できます

> max(x)
[1] 2.890879
> 
于 2012-07-05T17:43:08.237 に答える