计算组平均值,同时使用dplyr排除当前观察值

安德鲁

使用dplyr(最好),我试图计算每个观察值的组平均值,同时将该观察值从组中排除。

似乎应该结合使用rowwise()和和可以实现group_by(),但是两个功能不能同时使用。

给定此数据框:

df <- data_frame(grouping = rep(LETTERS[1:5], 3),
                 value = 1:15) %>%
  arrange(grouping)
df
#> Source: local data frame [15 x 2]
#> 
#>    grouping value
#>       (chr) (int)
#> 1         A     1
#> 2         A     6
#> 3         A    11
#> 4         B     2
#> 5         B     7
#> 6         B    12
#> 7         C     3
#> 8         C     8
#> 9         C    13
#> 10        D     4
#> 11        D     9
#> 12        D    14
#> 13        E     5
#> 14        E    10
#> 15        E    15

我想获得每个观察值的组均值,而该观察值不包含在组中,结果是:

#>    grouping value special_mean
#>       (chr) (int)
#> 1         A     1          8.5  # i.e. (6 + 11) / 2
#> 2         A     6            6  # i.e. (1 + 11) / 2
#> 3         A    11          3.5  # i.e. (1 + 6) / 2
#> 4         B     2          9.5
#> 5         B     7            7
#> 6         B    12          4.5
#> 7         C     3          ...

我曾尝试嵌套rowwise()在一个名为的函数中do(),但并未使它们起作用,它们遵循以下原则:

special_avg <- function(chunk) {
  chunk %>%
    rowwise() #%>%
    # filter or something...?
}

df %>%
  group_by(grouping) %>%
  do(special_avg(.))
一个孩子

无需定义自定义函数,相反,我们可以简单地将组中的所有元素相加,减去当前值,然后除以每组中的元素数减去1

df %>% group_by(grouping) %>%
        mutate(special_mean = (sum(value) - value)/(n()-1))
#   grouping value special_mean
#      (chr) (int)        (dbl)
#1         A     1          8.5
#2         A     6          6.0
#3         A    11          3.5
#4         B     2          9.5
#5         B     7          7.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法计算排除 sqlite3 中 .each 块中当前观察值的平均值

来自分类Dev

Stata-计算除当前观察值外的组中每个人的平均值

来自分类Dev

SAS:计算平均值,不包括当前观察值

来自分类Dev

R-如何计算n个先前值的平均值/平均值,但不包括当前观察值(滚动平均值)

来自分类Dev

关于使用dplyr的组内平均值

来自分类Dev

使用dplyr中的条件计算行平均值

来自分类Dev

数据框平均值计算->与中位数相差> 20%的值应从平均值计算中排除

来自分类Dev

计算数据组的平均值

来自分类Dev

计算计算值的平均值

来自分类Dev

使用滚动平均值计算值窗口

来自分类Dev

特定值组的平均值

来自分类Dev

SAS:通过分组变量(不包括观察值)来计算平均值

来自分类Dev

计算特定值的平均值

来自分类Dev

用前哨值计算平均值

来自分类Dev

连续计算值的平均值?

来自分类Dev

使用LINQ获取组的平均值

来自分类Dev

使用Pandas groupby计算组平均值并将其分配给子组

来自分类Dev

计算平均值?

来自分类Dev

如何计算加权平均值但使用SAS排除对象本身

来自分类Dev

计算排除R中某些列的行的平均值

来自分类Dev

从平均值计算中排除异常值

来自分类Dev

dplyr按组/ id的滚动平均值(移动平均值)

来自分类Dev

使用模板计算向量的平均值

来自分类Dev

使用numpy ndarray计算平均值

来自分类Dev

使用函数计算平均值

来自分类Dev

使用熊猫计算累积平均值

来自分类Dev

使用指针计算图像的平均值

来自分类Dev

使用函数计算平均值

来自分类Dev

使用通配符计算向量的平均值