0

以下のようなデータセットがあります。

id tag x y z
1  "A" 1 2 3
2  "B" 0 2 4
3  "A" 0 0 1
4  "B" 1 3 4

aggでグループ化されたサブセットを取るfunctionがありますtag。つまり、パラメーターは次のとおりです。

id tag x y z
1  "A" 1 2 3
3  "A" 0 0 1

がサブセット内のaggすべての単純な合計であるとしましょう。x y z7tag=="A"

だから私が欲しいのは次のような最終結果です:

"A" 7
"B" 14
...

のすべての値をリストし、tagそれらをループして個々のサブセットを取得し、それを関数にフィードできます。より良い方法はありますか?私は、これをうまく行うライブラリがいくつかあるに違いないと推測しています..

編集:より良い説明を提供するために質問を変更しました。今回はそれが明確になったことを願っています。

私が抱えている問題は、集計関数がサブセット全体を使用して値を生成するのに対し、通常の集計関数 (平均、長さなど) はサブセットから変数を取得することだと思います。

4

2 に答える 2

1
ds <- read.table(text='id tag x y z
 1  "A" 1 2 3
 2  "B" 0 2 4
 3  "A" 0 0 1
 4  "B" 1 3 4', header=TRUE)

lapply(split(ds[c('x','y','z')], ds$tag), sum)
$A
[1] 7

$B
[1] 14
于 2013-03-05T02:56:53.740 に答える
1

reshape2 を使用してリシェイプしたいと思います。. .

library(reshape2)
df <- read.table(
  header=TRUE, text='
id tag x y z
1  "A" 1 2 3
2  "B" 0 2 4
3  "A" 0 0 1
4  "B" 1 3 4
')
df[,1]<- NULL
df2<- melt(df, id="tag")
dcast(df2, tag~., sum)

#  tag NA
#1   A  7
#2   B 14
于 2013-03-04T16:53:53.227 に答える