2

Rには、顧客1、2、および3のトランザクションレコードを提供する次のデータフレームがあります。各行には、トランザクションが行われた期間タイプと彼が費やした金額が表示されます。

id<-c(1,2,3,1,1,2,3,2,2)
period<-c("calib","valid","valid","calib","valid","valid","calib","calib","valid")
spent<-c(10,3,8,12,5,5,4,3,5)
df<-data.frame(id,period,spent)

ここで、新しいデータフレームを作成する必要があります。これにより、さまざまな期間のトランザクションごとの各「id」の平均「使用済み」が得られます。エクセルピボットテーブルで取得した結果のテーブルは、次のようになります。

id  calib    valid
1     11       5
2     3        4.33
3     4        8

Rでこれを機能させる方法があるはずですが、私はRを初めて使用するので、気づいていません。誰かがこれを手伝ってくれるかしら。

4

3 に答える 3

3

reshape2パッケージを使用dcastしてこれを行うことができます (他の多くの方法の中でも、私は確信しています):

library(reshape2)
dcast(df,id~period,fun.aggregate = mean)

  id calib    valid
1  1    11 5.000000
2  2     3 4.333333
3  3     4 8.000000

spent(データフレームにベクトルを含めるつもりであると想定していることに注意してください。)

于 2012-07-22T03:22:09.560 に答える
3

完全を期すための基本的なソリューションを次に示します。

spentコードを編集しましたが、最後の data.frameに含めるのを忘れていました。

df <- data.frame(id, period, spent)
with(df, tapply(spent, INDEX = list(id, period), FUN = mean))

  calib    valid
1    11 5.000000
2     3 4.333333
3     4 8.000000
于 2012-07-22T07:03:53.867 に答える