3

data.table でいくつかの集計を行おうとしていますが、解決策を見つけることができない 1 つの課題に直面しています。課題は非常に単純です。複数のディメンションに沿って data.table の値の一部を要約したいと思います。

次のコードを機能させるのに問題はありません。

Export4R[,sum(units),by=Type]

これにより、次の行に沿って何かが得られます。

Type    Value
foobar  45
barfoo  25

しかし今、私はそれをもう少し分解して、次のような表を得たいと思っています:

Type    Month    Value
foobar  Mar      12
foobar  Apr      7
....

次のようなコード行でこれを実行しようとしましたが、残念ながらこれはうまくいかないようです:

Export4R[,sum(units),by=Type,Month]

これはおそらく非常に単純な問題ですが、答えを見つけるのに問題があります。

助けてくれてありがとう!

4

1 に答える 1

5
Export4R[,sum(units),by="Type,Month"]

また

Export4R[,sum(units),by=list(Type,Month)]



後者の構文では、列名と名前の表現が可能です。例えば、

Export4R[,sum(units),by=list(Grp1=substring(Type,1,2), Grp2=Month)]

ところで、あなたは多くの行にわたって長いクエリをフォーマットすることができます:

Export4R[,list(
    s = sum(units)
    ,m = mean(units)
),by=list(
    Grp1=substring(Type,1,2)
    ,Grp2=Month
)]

このように先頭にコンマを付ける理由は、最後の項目の閉じ括弧をいじることなく、列を簡単に追加およびコメント化できるようにするためです。例えば、

Export4R[,list(
    s = sum(units)
    # ,m = mean(units)
),by=list(
    Grp1=substring(Type,1,2)
    # ,Grp2=Month
)]

そのアイデアはSQLから来ています。

于 2012-11-26T09:57:53.980 に答える