私はRを初めて使用し(以前にMATLABを使用したことがあります)、これに対する解決策を長い間探してきましたが、この(一見)非常に簡単な問題に対する解決策を見つけることができません。ここに問題があります。
最初の列には、数日間の時間の値 (この例では単純化されています) があり、2 番目の列には、平均したい値があります。私がやりたいことは、同じ時間に属するすべての値を取得し、それを平均することです。私はかなり大きなデータセットに対してこれを行っているので、これを自動的に行うと非常に役立ちます。
セットアップしましょう:
time = rep( c("00:00", "00:10", "00:20", "00:30", "00:40", "00:50", "01:00", "01:10"), 5)
values = c(sample(1:100, 40))
data = cbind(time, values)
これで、時間と値を含むマトリックスができました。(たとえば)「00:00」を持つすべての値をグループ化し、この平均を計算したいと思います。いくつかの検索の後、aggregate()
関数がうまく役立つことがわかったので、次のことを行いました。
aggregate(as.numeric(data[,-1]), by = list(sort(data[,1])), mean)
出力がある
Group.1 x
1 00:00 77.2
2 00:10 59.2
3 00:20 51.0
4 00:30 49.4
5 00:40 51.4
6 00:50 33.4
7 01:00 33.8
8 01:10 51.6
うまく機能しているように見えますが、手で計算すると、値の平均はすべて異なります。(たとえば、00:00 の場合: (56+3+91+71+8)/5 = 45.8 であり、77.2 ではありません)、誰かが私が間違っていることを教えてもらえますか?