-1
DF2
Date         EMMI      ACT      NO2
2011/02/12   12345     21       11
2011/02/14   43211     22       12
2011/02/19   12345     21       13
2011/02/23   43211     13       12
2011/02/23   56341     13       12
2011/03/03   56431     18       20 

列内の 2 つの日付の違いを見つける必要があります。たとえば、ACT 列の値の違いです。たとえば、EMMI 12345、2011/02/19 - 2011/02/12 = 21-21 = 0 の日付の違いです。ACT の列全体に対してそうしたいのです。新しい列の差分を追加し、それに値を追加します。どなたか、やり方を教えてください。

これは私が望む出力です

DF3
Date         EMMI      ACT      NO2  DifACT
2011/02/12   12345     21       11    NA
2011/02/14   43211     22       12    NA
2011/02/19   12345     21       13    0
2011/02/23   43211     13       12    -9
2011/02/23   56341     13       12    5
4

2 に答える 2

0

これは plyr パッケージに基づいています (テストされていません):

library(plyr)
DF3<-ddply(DF2,.(EMMI),mutate,difACT=diff(ACT))
于 2013-08-23T20:47:48.673 に答える
0

これを試して:

DF3 <- DF2
DF3$difACT <- ave( DF3$ACT, DF3$EMMI, FUN= function(x) c(NA, diff(x)) )

日付が (EMMI 内で) 並べ替えられている限り、これは機能します。並べ替えられていない場合は、最初に EMMI 内で並べ替えるように上記を変更する必要があります。おそらく、最初にデータ フレーム全体を日付で並べ替え (そして の結果を保存order)、次に上記を実行します。その後、元の順序に戻す必要がある場合はorder、元の結果の結果を実行してorder、データ フレームの「順序を逆にする」ことができます。

于 2013-08-23T20:40:24.663 に答える