0

単純な集計があります:

dat = read.table(textConnection(
  'ID value
  1 4
  1 7
  2 8
  2 3
  2 3'), header = TRUE)

aggregate(dat,by=list("type"=dat$ID),sum)

結果が出力されます:

       type ID value
    1    1  2    11
    2    2  6    14

私は疑問に思います:
1。最初の行で、なぜIDが2なのですか?
2. 2行目で、IDが6である理由

4

1 に答える 1

2

で集計された、各列の合計をリクエストしましたdat$ID。このインターフェースを使用すると、すべての列が含まれます。 dat$IDは単なるベクトルであるためID、集計結果から列が削除されることはありません。この機能は、各グループ内にsumも適用されます。ID

最初の行では、計算中with(dat, sum(ID[dat$ID==1]))または1+1です。
2行目では、計算中with(dat, sum(ID[dat$ID==2]))または2 + 2 + 2です(呼び出しが行っているのは、ではなく、各インデックスで
意図的に指定したことです)。dat$IDIDaggregate

数式インターフェイスを使用するaggregateと、よりクリーンになり、必要なものが得られます。このインターフェースを使用して、各集計グループに表示される列aggregateの合計を求めます。valueID

> aggregate(value ~ ID, data=dat, sum)
  ID value
1  1    11
2  2    14
于 2012-12-30T02:29:44.157 に答える