1
私はパンダのDataFrameをグループに分割し、各チャンクで複雑な機能を実行したいと考えています。複合関数は、各チャンクに対して、任意の数と列の名前と任意の数の行を持つDataFrameを返します。これらの結果のDataFrameを操作後に結合したいと思います。 Rで、私は結果がパンダでR dplyrのやり方は?
Source: local data frame [15 x 5]
Groups: g [2]
g c1 c2 res type
<chr> <dbl> <dbl> <dbl> <fctr>
1 a 1 6 6.0000000 mult
2 a 2 7 14.0000000 add
3 a 1 6 7.0000000 div
4 a 2 7 9.0000000 mult
5 a 1 6 0.1666667 add
6 a 2 7 0.2857143 div
7 b 3 8 24.0000000 mult
8 b 4 9 36.0000000 add
9 b 5 10 50.0000000 div
10 b 3 8 11.0000000 mult
11 b 4 9 13.0000000 add
12 b 5 10 15.0000000 div
13 b 3 8 0.3750000 mult
14 b 4 9 0.4444444 add
15 b 5 10 0.5000000 div
このことで
library(tibble)
library(dplyr)
df = tribble(
~g, ~c1, ~c2,
"a", 1, 6,
"a", 2, 7,
"b", 3, 8,
"b", 4, 9,
"b", 5, 10
)
myfct <- function(x, y){
data.frame(c1 = x,
c2 = y,
res = c(x * y, x + y, x/y),
type = c('mult', 'add', 'div'))
}
df %>% group_by(g) %>% do(myfct(.$c1, .$c2))
でこれを行うことができています - もちろん - 一例に過ぎません。
[OK]を、私は、これは正しい方向への一歩だと思いますが、私もうgroupby列は表示されません。それを戻すことはできますか? – Make42
編集した回答を確認してください。 – jezrael