这是我的数据框简短:
ID IDaxis Y Date-Time Tdiff
1 1 5 2012-06-11 13:10:30 0.00
1 1 10 2012-06-11 15:10:30 2.00
1 1 20 2012-06-11 17:10:30 2.00
1 3 15 2012-06-11 13:20:30 0.00
1 3 30 2012-06-11 14:20:30 1.00
1 3 45 2012-06-11 17:20:30 3.00
1 6 9 2012-06-11 13:35:30 0.00
1 6 15 2012-06-11 15:35:30 2.00
1 6 30 2012-06-11 18:35:30 3.00
3 2 8 2012-06-11 13:50:30 0.00
3 2 14 2012-06-11 14:55:30 1.083
3 2 20 2012-06-11 16:55:30 2.00
3 2 30 2012-06-11 19:00:30 2.083
3 5 10 2012-06-11 13:40:30 0.00
3 5 15 2012-06-11 16:45:30 3.083
ID - 植物
IDaxis - 植物叶
Y - 叶的长度
日期 - 时间 - 测量日期和时间
Tdiff - 测量之间的时间间隔(h)
我想做(示例SHORT1):
1)在SHORT $ Ttot列中总结IDaxis的Tdiff
2)在SHORT $ Ydiff列中计算ID轴中Y行的差异
3)在SHORT $ Ytot
示例SHORT1:
Ydiff - 测量之间的长度间隔
Ytot - 从测量到测量的长度间隔之和
Ttot - 从测量到测量的时间间隔之和
如果我拆分数据帧,我知道如何为IDaxis计算。我的问题是我有三个数据帧,每个700 ID,每个有100个IDaxis。我不知道如何自动完成整个数据帧。提前谢谢。
答案 0 :(得分:1)
您可以使用ave
:
SHORT$Ttot <- ave(SHORT$Tdiff, SHORT$IDaxis, FUN = cumsum),
SHORT$Ydiff <- ave(SHORT$Y, SHORT$IDaxis, FUN = diff),
SHORT$Ytot <- ave(SHORT$Ydiff, SHORT$IDaxis, FUN = cumsum),
(如果您不喜欢重复的SHORT$
,请查看transform
等函数。)
您还可以使用方便的plyr
包:
library(plyr)
ddply(SHORT, "IDaxis", transform, Ttot = cumsum(Tdiff),
Ydiff = diff(Y),
Ytot = cumsum(Ydiff))
答案 1 :(得分:0)
使用aggregate()和merge()。
的链接