使用 group_map 将函数应用于分组小标题中的每个组

TYL*_*TYL 3 r function dplyr tibble

如何使用 group_map 将自定义函数应用于分组标题中的每个组。我想以公斤为单位找到每组的平均体重,并为每个案例创建一个新列。因此,每组中的每个案例都应该具有相同的平均权重。

# custom function
meanKG = function(vector) {
  return(mean(vector, na.rm=TRUE) / 2.2)
}

df = mtcars %>% group_by(cyl)

# A tibble: 32 x 11
# Groups:   cyl [3]
     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
 * <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
 1  21       6  160    110  3.9   2.62  16.5     0     1     4     4
 2  21       6  160    110  3.9   2.88  17.0     0     1     4     4
 3  22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
 4  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
 5  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
 6  18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
 7  14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
 8  24.4     4  147.    62  3.69  3.19  20       1     0     4     2
 9  22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2
10  19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4
# ... with 22 more rows
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

df %>% group_map(~ meanKG(.wt))
Run Code Online (Sandbox Code Playgroud)

但它一直说找不到对象 .wt。

我在这里做错了什么?

Ron*_*hah 6

要使用,group_map您需要返回一个小标题

meanKG = function(vector) {
  return(tibble::tibble(mean = mean(vector, na.rm=TRUE) / 2.2))
}
Run Code Online (Sandbox Code Playgroud)

然后应用函数

library(dplyr)

mtcars %>%
  group_by(cyl) %>%
  group_map(~meanKG(.x$wt))

#     cyl  mean
#   <dbl> <dbl>
#1     4  1.04
#2     6  1.42
#3     8  1.82
Run Code Online (Sandbox Code Playgroud)