パネル データがあり、データ フレームには 3 人の個体があり、それぞれに 4 期間の観測があります。
test.data <- data.frame(
id = c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3),
t = rep(1:4, 3), var1 = runif(12), var2 = runif(12)
)
このように見えるはずです
id t var1 var2
1 1 1 0.2851789 0.66365753
2 1 2 0.6630548 0.07679873
3 1 3 0.9000371 0.17182666
4 1 4 0.8782424 0.11931904
5 2 1 0.2642084 0.70807513
6 2 2 0.9993678 0.48880088
7 2 3 0.5662814 0.49188144
8 2 4 0.7335935 0.74017649
9 3 1 0.9868327 0.32792638
10 3 2 0.5388366 0.05465845
11 3 3 0.8814602 0.45199318
12 3 4 0.9066551 0.89814063
ここで、2 つの連続する期間の平均を取得し (つまり、t=1 と t=2 を 1 つの期間として組み合わせ、その値を 2 つの期間の平均とする)、時系列を 2 つの期間に短縮したいと考えています。結果はこのようになるはずです
id t var1 var2
1 1 1 0.4495637 0.88822370
2 1 2 0.2770255 0.68399219
3 2 1 0.8125967 0.15395440
4 2 2 0.6232424 0.02663445
5 3 1 0.8965059 0.79910001
6 3 2 0.1109559 0.47906885
どうすればこれを管理できますか?
誰かがすでにstackoverflowで同じ質問をしているのを見ましたが、それはmysqlにあります(ここでは 複数のタイムスパンを組み合わせる方法)、Rに解決策があるかどうか疑問に思います(mysqlコードを読むことができません..)
よろしくお願いします。
編集: @dimitris_ps は既に問題に対する回答を提供しており、より一般的な解決策があるかどうか疑問に思っています。データ フレームが以下のようで、変数が 50 個ある場合はどうなるでしょうか。
id t var1 var2
1 1 1991 0.3900957 0.49582924
2 1 1992 0.1157777 0.50907756
3 1 1993 0.1358916 0.05172451
4 1 1994 0.2608382 0.25032905
5 2 1991 0.8958081 0.97127891
6 2 1992 0.2265558 0.73085533
7 2 1993 0.2310969 0.63263599
8 2 1994 0.4302372 0.48394795
9 3 1991 0.7823354 0.75783991
10 3 1992 0.3295121 0.78468692
11 3 1993 0.2771166 0.59183611
12 3 1994 0.1905194 0.64325034