2012-01-22 5 views
2

データフレームの列の値が新しいかどうかを判断する関数を作成しようとしています。私は、次のデータを持っていたのであれば、たとえば:データフレームのすべての以前の値の最大値を測定

x <- rnorm(10,100,sd=5) 
x <- data.frame(x) 

にはどうすればいいだけのアカウントに以前のすべての値をとり、新しい列に、TRUEまたはFALSEを返すことができます。私はそれが全体の列の最大値の代わりに、以前のすべての値のサブセットを計算して結果表は、以下の通りです

x$new.max <- ifelse (x$x == max(x$x) , TRUE, FALSE) 

をしようとした場合

  x new.max 
1 102.42810 NA 
2 109.22762 TRUE 
3 101.97970 FALSE 
4 101.49303 FALSE 
5 93.30595 FALSE 
6 96.77199 FALSE 
7 110.96441 TRUE 
8 96.27485 FALSE 
9 101.77163 FALSE 
10 100.78992 FALSE 

:結果の表には、次のようになります。

  x new.max 
1 102.42810 FALSE 
2 109.22762 FALSE 
3 101.97970 FALSE 
4 101.49303 FALSE 
5 93.30595 FALSE 
6 96.77199 FALSE 
7 110.96441 TRUE 
8 96.27485 FALSE 
9 101.77163 FALSE 
10 100.78992 FALSE 

答えて

4

cummax()と呼ばれる実行中の最大値を計算する組み込み関数があります。

diff(cummax(x))は、新しい最大値が達成された位置ではゼロではありません(最初の要素のエントリは、xです。常に新しい最大値です)。一緒に作品を置く

new.max <- c(TRUE, diff(cummax(x)) > 0) 

を私がTRUEへの最初の要素を設定しましたが、それは全く同じようにNAである可能性があります。

+0

うわー、ありがとう。私はRの関数について学ぶのが大好きです。 – Kevin

関連する問題