0

観測値が保存されたデータフレームがあります

> m

    ID       Date count Day Month
1  111 2011-05-22     0 Sun   May
2  111 2011-05-23     5 Mon   May
3  111 2011-05-24     5 Tue   May
4  111 2011-05-25     2 Wed   May
5  111 2011-05-26     2 Thu   May
6  112 2011-05-22     2 Sun   May
7  112 2011-05-23     2 Mon   May
8  112 2011-05-24     1 Tue   May
9  111 2011-05-25     0 Wed   May
10 112 2011-05-26     6 Thu   May

ID と日付に対応する「カウント」変数の過去の値を追加する列をいくつか追加する必要があります。たとえば、ID 111 の場合、各日付の 1 日前、2 日前、3 日前、またはその他の時間枠とそれに対応する各 ID のカウントの合計が必要です。

望ましい出力は次のようになります

> m

    ID       Date count Day Month TwoDaysSum ThreeDaysSum
1  111 2011-05-22     0 Sun   May         NA           NA
2  111 2011-05-23     5 Mon   May         NA           NA
3  111 2011-05-24     5 Tue   May          5           NA
4  111 2011-05-25     2 Wed   May         10           10
5  111 2011-05-26     2 Thu   May          7            7
6  112 2011-05-22     2 Sun   May         NA           NA
7  112 2011-05-23     2 Mon   May         NA           NA
8  112 2011-05-24     1 Tue   May          4           NA
9  111 2011-05-25     0 Wed   May          3            5
10 112 2011-05-26     6 Thu   May          1            3

最終的には、月/四半期/年などのより大きな時間枠の合計を見つけるために戻る必要があります。

誰かがそれをどうやって進めるか考えていますか?

4

1 に答える 1

0
DF<-read.table(text=" ID       Date count Day Month
1  111 2011-05-22     0 Sun   May
2  111 2011-05-23     5 Mon   May
3  111 2011-05-24     5 Tue   May
4  111 2011-05-25     2 Wed   May
5  111 2011-05-26     2 Thu   May
6  112 2011-05-22     2 Sun   May
7  112 2011-05-23     2 Mon   May
8  112 2011-05-24     1 Tue   May
9  112 2011-05-25     0 Wed   May #fixed typo
10 112 2011-05-26     6 Thu   May",header=T,stringsAsFactors = F,sep="")

#sort to be safe
DF<-DF[order(DF$ID,DF$Date),]

DF$TwoDaysSum<-ave(DF$count,DF$ID,FUN=function(x) filter(x,c(0,1,1),sides=1))
DF$ThreeDaysSum<-ave(DF$count,DF$ID,FUN=function(x) filter(x,c(0,1,1,1),sides=1))

DF

    ID       Date count Day Month TwoDaysSum ThreeDaysSum
1  111 2011-05-22     0 Sun   May         NA           NA
2  111 2011-05-23     5 Mon   May         NA           NA
3  111 2011-05-24     5 Tue   May          5           NA
4  111 2011-05-25     2 Wed   May         10           10
5  111 2011-05-26     2 Thu   May          7           12
6  112 2011-05-22     2 Sun   May         NA           NA
7  112 2011-05-23     2 Mon   May         NA           NA
8  112 2011-05-24     1 Tue   May          4           NA
9  112 2011-05-25     0 Wed   May          3            5
10 112 2011-05-26     6 Thu   May          1            3
于 2012-07-20T20:26:02.737 に答える