1

次の形式のデータがあります。

    date     x     
    2001/06  9949 
    2001/07  8554  
    2001/08  6954 
    2001/09  7568 
    2001/10 11238  
    2001/11 11969 
    ... more rows

毎月のx平均を抽出したいと思います。集約を使用していくつかのコードを試しましたが、失敗しました。これを行う上で助けてくれてありがとう。

4

2 に答える 2

1

dfここでは、より多くのデータで呼び出されるデータフレームをシミュレートします。

df <- data.frame( 
      date = apply(expand.grid(2001:2012,1:12),1,paste,collapse="/"),
      x = rnorm(12^2,1000,1000),
      stringsAsFactors=FALSE)

ベクトルの作成方法を使用dateすると、最初の4桁を削除してからスラッシュを続けることで、月を取得できます。ここでは、これをインデックス変数として使用してtapply、平均を計算します。

with(df, tapply(x, gsub("\\d{4}/","",date), mean))
于 2012-08-16T13:24:17.367 に答える
0

申し訳ありません...月シーケンスベクトルを作成してから、tapplyを使用してください。とても簡単でした:

m.seq = rep(c(6:12, 1:5), length = nrow(data))
m.means = tapply(data$x, m.seq, mean)

しかし、とにかくコメントをありがとう!

于 2012-08-16T13:07:47.240 に答える