R 在不中断管道工作流(或连接回临时TIBLE)的情况下获取组平均值

R 在不中断管道工作流(或连接回临时TIBLE)的情况下获取组平均值,r,dplyr,tibble,R,Dplyr,Tibble,我的数据有一个分组变量group,我想找到x组平均值的中位数,以便我可以标记组平均值x高于x中位数组平均值的组 如果我将组平均值保存到一个tibbletemp,将x\u平均值与median(x\u平均值)进行比较,然后合并回temp,则此计算很容易 库(tidyverse) 种子集(2001) tb% 变异(x=runif(n())+ifelse(组%1:2,1,0)) 结核病 #>#tibble:5 x 2 #>x组 #> #> 1 1 1.76 #> 2 2 1.6

我的数据有一个分组变量
group
,我想找到
x
组平均值的中位数,以便我可以标记组平均值
x
高于
x
中位数组平均值的组

如果我将组平均值保存到一个tibble
temp
,将
x\u平均值
median(x\u平均值)
进行比较,然后合并回
temp
,则此计算很容易

库(tidyverse)
种子集(2001)
tb%
变异(x=runif(n())+ifelse(组%1:2,1,0))
结核病
#>#tibble:5 x 2
#>x组
#>    
#> 1     1 1.76 
#> 2     2 1.61 
#> 3     3 0.218
#> 4     3 0.229
#> 5     3 0.153
温度%
分组依据(分组)%>%
汇总(x_平均值=平均值(x))%>%
解组()%>%
变异(x_hi=(x_均值>中值(x_均值)))
临时雇员
#>#tibble:3 x 3
#>组x_表示x_hi
#>      
#>1.76正确
#>2.1.61错误
#>30.200错误
tb加入,由=“集团”
这是所需的输出。4/5的观察值低于中位数似乎有些奇怪,但这是可能的,因为我的组数不相等

tb
#>#A tibble:5 x 4
#>组x_平均x_高
#>       
#>1.76 1.76正确
#>2 1.61 1.61错误
#>3 0.218 0.200假
#>43 0.229 0.200错误
#>530.1530.200假
我希望在不破坏管道工作流程的情况下执行此操作。以下尝试失败,因为我的组具有不同的计数

tb%
分组依据(分组)%>%
突变(x_means2=平均值(x))%>%
解组()%>%
突变(x_hi2=(x_均值>中值(x_均值)))
结核病
#>#tibble:5 x 6
#>组x_平均x_高x_平均2 x_高2
#>           
#>1 1.76 1.76正确1.76正确
#>2 1.61 1.61假1.61真
#>3 0.218 0.200假0.200假
#>430.2290.200假0.200假
#>5 3 0.153 0.200假0.200假
有没有一种方法可以在不破坏我的管道式工作流程的情况下,通过
x
获取组平均值


由(v0.3.0)创建于2019-07-29只需使用

库(dplyr)
tb%>%
分组依据(分组)%>%
变异(x_平均值=平均值(x))%>%
解组%>%
变异(x_hi=x_均值>中值(唯一(x_均值)))
#>#A tibble:5 x 4
#>组x_平均x_高
#>       
#>1.76 1.76正确
#>2 1.61 1.61错误
#>3 0.218 0.200假
#>43 0.229 0.200错误
#>530.1530.200假

M-M的答案适用于具体案例,但我认为如果有多个组的平均分数相同,那么答案就不准确了

tb %>% 
  group_by(group) %>% 
  mutate(x_mean = mean(x)) %>% 
  ungroup  %>% 
  nest(-x_mean, -group) %>% 
  mutate(x_median = median(x_mean)) %>% 
  unnest %>% 
  mutate(x_hi = x_mean > x_median)

该死!我忘了我所有的底牌。谢谢。