我有一个包含以下列(简化)的数据框:日期、ID、价格:
Date ID Price
1/2/2013 05947U4Q8 25
1/2/2013 05947UT40 9.40264
1/2/2013 07387BAW3 8.75
1/2/2013 07387BBJ1 4.4861
1/2/2013 07387BEQ2 5
1/2/2013 12513EAY0 6
1/2/2013 20047PAS6 33
1/3/2013 05947UT40 9.40414
1/3/2013 07387BAW3 8.75
1/3/2013 07387BBJ1 4.4742
1/3/2013 07387BEQ2 5
1/3/2013 12513EAY0 6
1/3/2013 20047PAS6 33
因此,对于每个日期,都有多个 ID,每个 ID 都有一个价格。ID 可能会从一天到另一天发生变化(一些脱落,另一些被添加)。我要计算的是,每一天,每个 ID 的价格变化(如果 ID 的价格在前一天已知)。因此,对于上面的示例,输出应该是:
Date ID Price change
1/3/2013 05947UT40 0.0015
1/3/2013 07387BAW3 0
1/3/2013 07387BBJ1 -0.0119
1/3/2013 07387BEQ2 0
1/3/2013 12513EAY0 0
1/3/2013 20047PAS6 0
天真地使用:
tapply(dataSet$Price, as.Date(dataSet$Date), diff)
不起作用,即没有给我我正在寻找的东西。