私は、列g$z
が列f$z
からすべてのグループごとの値のリストが含まれているように、新しいデータフレームg
にデータフレームf
を集約したいと思います。一見、これは動作しているようだ:データフレーム内のリストの計算を行う
f = data.frame(x=c(1, 1, 1, 2), y=c(4, 4, 5, 6), z=c(11, 12, 13, 14))
g = aggregate(z ~ x + y, f, c)
x y z
1 1 4 11, 12
2 1 5 13
3 2 6 14
今私は、データフレーム内のすべての行の列c
にリストに異なる計算を行うと、同じデータフレームに新しい列に結果を入れたいです。しかし、これは動作しません!
g$m = sum(g$z)
g$n = g$z + 1
Error in sum(g$z) : invalid 'type' (list) of argument
上記のようなデータフレームセル内でリストを操作するにはどうすればよいですか?それともこれは単にRのような/不可能なのでしょうか?もしそうなら、正しいアプローチは何ですか?
UPDATE
私の基本的な目標は、元のデータセットにXとYのすべての組み合わせでグループ単位の演算の多くを行うことです。 Rの一般的な選択肢は何ですか?
apply
を使用してください。プロ:1つのテーブルにすべて。 Con:複雑なテーブル構造。sum
などを使用できません。- (y)、for(x)、サブセット。プロ:直接
sum
などできます。 Con:たくさんのコードがあり、遅くなる可能性があります。 - 元のテーブルと集計テーブルで並行して作業します。プロ:できます
sum
等コン:データの複製。 - 他のオプションはありますか?
'g $ m'の' sapply'は以下のようになります。そして 'g $ n - - relist(unlist(g $ z)+ 1、g $ z)' –