ddply の次のコード:
ddply(df, .(groupA), summarise, x=sum(x)/sum(a), y=sum(x)/sum(b))
上記の関数を実行してyによって値を計算すると、取得しよsum(x)/sum(b)うとしているものが取得されず、代わりに が取得sum(sum(x)/sum(a))/sum(b)さxれます。x=sum(x)/sum(a)x
では、新しく計算されたx値を使用せずに、元の df を使用する方法はx? この機能は以前は実装されておらず、2011 年または 2012 年のいずれかの時点で追加されたことを覚えています。記憶が正しければ解決方法はあると思いますが…
ありがとう。
[アップデート]
たとえば、SimonO101 の場合、次の 2 つのコードは異なる結果を返します。
ddply(mtcars,.(cyl),summarise,x=mean(hp/wt))
ddply(mtcars,.(cyl),summarise,hp=mean(hp),wt=mean(wt),x=mean(hp/wt))
2 番目の関数は、元の df のandではなく、計算されたばかりのhpandからとの値を取得するためです。したがって、これらの列に元の列と同じ名前を付けることを避けずに、名前の競合を回避する方法を知りたいです。wtmean(hp)mean(wt)hpwt