0

这是我的数据框简短:

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 - 叶长
Date - Time - 测量日期和时间
Tdiff - time(h) 测量间隔

我想做(示例 SHORT1):
1)在 SHORT$Ttot 列中为 IDaxis 总结 Tdiff
2) 为 SHORT$Ydiff 列中的 IDaxis 计算 Y 行之间的差异
3) 在 SHORT$Ytot 列中为 IDaxis 求和 Ydiff

示例 SHORT1:

在此处输入图像描述

Ydiff -测量之间
的长度间隔 Ytot - 从测量到测量的长度间隔之和
Ttot - 从测量到测量的时间间隔总和

如果我拆分数据框,我知道如何为 IDaxis 计算这个。我的问题是我有三个数据框,每个 700 ID,每个都有 100 IDaxis。我不知道如何为整个数据框自动执行此操作。先感谢您。

4

2 回答 2

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))
于 2012-12-13T11:53:30.567 回答
0

使用聚合()和合并()。

这是聚合http://www.statmethods.net/management/aggregate.html的链接

于 2012-12-13T11:39:19.970 回答