-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 

我需要找出列中两个日期之间的差异。例如 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

尝试这个:

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 回答
0

这是基于 plyr 包(未测试):

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