2つ続けて質問するのは本当に嫌いですが、これは頭を抱えることができないものです。したがって、次のようにデータフレームがあるとします。
df
Row# User Morning Evening Measure Date
1 1 NA NA 2/18/11
2 1 50 115 2/19/11
3 1 85 128 2/20/11
4 1 62 NA 2/25/11
5 1 48 100.8 3/8/11
6 1 19 71 3/9/11
7 1 25 98 3/10/11
8 1 NA 105 3/11/11
9 2 48 105 2/18/11
10 2 28 203 2/19/11
11 2 35 80.99 2/21/11
12 2 91 78.25 2/22/11
Rで、ユーザーグループごとに1行の前日の連続した日(および前日のみ、前の結果ではない)の夕方の値と異なる行の朝の値の差をとることは可能ですか?だから私の望ましい結果はこれでしょう。
df
Row# User Morning Evening Date Difference
1 1 NA NA 2/18/11 NA
2 1 50 115 2/19/11 NA
3 1 85 129 2/20/11 30
4 1 62 NA 2/25/11 NA
5 1 48 100.8 3/8/11 NA
6 1 19 71 3/9/11 81.8
7 1 25 98 3/10/11 46
8 1 10 105 3/11/11 88
9 2 48 105 2/18/11 NA
10 2 28 203 2/19/11 77
11 2 35 80.99 2/21/11 NA
12 2 91 78.25 2/22/11 -10.01
これを実行したいのは、各ユーザーグループの朝の値を取得し、前日の連続した日の夕方の値から減算することだけです。ご覧のとおり、データフレームの一部には、朝と夕方の列にNA値が含まれています。さらに、すべての日付が異なるユーザーごとに連続しているわけではないため、当然、NAを割り当てる必要があります。
私はグーグルを検索しようとしましたが、異なる列の行のグループごとに異なる行に関数を適用できることについての情報はあまりありませんでした(それが理にかなっている場合)。
私の試みには、これの多くのバリエーションが含まれています。
df$Difference<-ave((df$Morning,df$Evening),
df$User,
FUN=function(x){
c('NA',diff(df$Evening-df$Morning)),na.rm=T
})
繰り返しになりますが、どんな助けでも大歓迎です。ありがとう。