0

これは私のデータフレームSHORTです。

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のIDaxisのYの行間の差を計算する
3)列SHORT$YtotのIDaxisのYdiffを合計する

例SHORT1:

ここに画像の説明を入力してください

Ydiff-測定間の長さ間隔Ytot-
測定から測定までの長さ間隔の合計
Ttot-測定から測定までの時間間隔の合計

データフレームを分割する場合、IDaxisに対してこれを計算する方法を知っています。私の問題は、700 IDごとに3つのデータフレームがあり、それぞれに100IDaxisがあることです。データフレーム全体に対して自動的にそれを行う方法がわかりません。前もって感謝します。

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

Aggregate()とmerge()を使用します。

ここに集約http://www.statmethods.net/management/aggregate.htmlへのリンクがあります

于 2012-12-13T11:39:19.970 に答える