1
データセット内の各参加者の移動平均を計算したいと思います。どのように異なる開始日の移動平均を計算するのですか?
参加者に複数の訪問日があり、過去3日間および各訪問前の過去2日間の平均値(訪問日を除く)を計算したいと思います。
たとえば、let id = 1、date = 6/6/2017とします。
過去2日間の平均値は、2011年6月5日と2011年6月4日の平均値である必要があります。
サンプルデータセットは以下のように生成されます。 私ははるかに大きなデータセット、より多くの参加者、より多くの訪問、そしてより価値の高い日々に取り組んでいます。私はこれらの平均を計算する効率的な方法を見出したいと思います。
timeseries <- data.frame(id=c(1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3), date=c("6/1/2017","6/2/2017","6/3/2017","6/4/2017","6/5/2017","6/6/2017",
"6/1/2017","6/2/2017","6/3/2017","6/4/2017","6/5/2017","6/6/2017",
"6/1/2017","6/2/2017","6/3/2017","6/4/2017","6/5/2017","6/6/2017"),
value=c(2,3,4,NA,6,7,
NA,9,5,NA,3,2,
5,7,3,8,3,5))
> timeseries
id date value
1 1 6/1/2017 2
2 1 6/2/2017 3
3 1 6/3/2017 4
4 1 6/4/2017 NA
5 1 6/5/2017 6
6 1 6/6/2017 7
7 2 6/1/2017 NA
8 2 6/2/2017 9
9 2 6/3/2017 5
10 2 6/4/2017 NA
...
visit <- data.frame(id=c(1,1,2,3,3,3),
date=c("6/6/2017","6/5/2017",
"6/6/2017",
"6/6/2017","6/5/2017","6/4/2017"))
> visit
id date
1 1 6/6/2017
2 1 6/5/2017
3 2 6/6/2017
4 3 6/6/2017
5 3 6/5/2017
6 3 6/4/2017
結果表はmean3は、過去3日間の平均値であり、mean2過去2日間各id
のため
> result
id date mean3 mean2
1 1 6/6/2017
2 1 6/5/2017
3 2 6/6/2017
4 3 6/6/2017
5 3 6/5/2017
6 3 6/4/2017
ありがとうございます。しかし、私はこれが正しい答えを与えるとは思わない。あなたの結果(6.500000)から最初の値を見ると、この数値はid = 1の過去2日間の平均値(mean2)を2014年6月6日までに表すはずです。時系列データセットによると、このmean2は6でなければなりません(2017年6月5日の値のみが利用可能であると仮定すると) – cyrusjan
ありがとうございます。これは役立ちます – cyrusjan