R を使用している間、変数をグループごとに要約する data.frame で操作を実行し、それらの要約値を data.frame に追加したいことがよくあります。これは、例によって最も簡単に示されます。
myDF <- data.frame(A = runif(5), B = c("A", "A", "A", "B", "B"))
myDF$Total <- with(myDF, by(A, B, sum))[myDF$B]
myDF$Proportion <- with(myDF, A / Total)
これは以下を生成します:
A B Total Proportion
1 0.5272734 A 1.7186369 0.3067975
2 0.5105128 A 1.7186369 0.2970452
3 0.6808507 A 1.7186369 0.3961574
4 0.2892025 B 0.6667133 0.4337734
5 0.3775108 B 0.6667133 0.5662266
このトリック-基本的に名前付きの値のベクトルを取得し、それらをグループごとに関連する行に「広げる」または「伸ばす」-通常は機能しますclass(myDF$Total)
が、."array"
by()
c()
不思議なんだけど:
- この操作に一般的に使用される名前はありますか?
- これを行う別の、ハッキー感の少ない、および/またはより高速な方法はありますか?
- これを行う方法はあり
dplyr
ますか?私が気付いていないハドリー承認の動詞操作 (mutate、arrange など) があるかもしれません。簡単にできることはわかっていますがsummarise()
、これらの要約を data.frame に戻す必要があることがよくあります。