如何将 dplyr::summaries 转换为 dplyr::do

how to convert dplyr::summaries to dplyr::do

我有以下数据框:

 label  target    sale
   low    5000    4000
   low   11000    9000
   low    5500    4500
   low   12000    9500
middle   20000   18000
middle   22000  190000
  high  100000   90000
  high  120000   95000

我需要先按标签对数据框进行分组,然后计算:mean(target - sale) 仅适用于目标大于 10000 的行,我尝试了以下代码:

library(dplyr)
avg_increase <- df %>% 
                  group_by(labels) %>%
                  summarise(avg_sale_increase = ifelse(target >= 10000,mean(target - sale), 0))  

我收到以下错误:

Error: expecting a single value

由于 summarise 只有 returns 个单一值,我是否应该使用 deployer::do(或任何其他建议)更改我的代码来完成任务。

在对变量进行分组之前,您可以筛选行 >10000。

dat %>% filter(target>10000) %>% 
    group_by(label) %>% mutate(differ = mean(target-sale))

问题出在 ifelse 上,它 returns 一个向量 if 长度等于输入逻辑值,因此将根据需要多次计算平均值。

这应该有效

avg_increase <- df %>% 
                group_by(labels) %>% 
                filter(target >= 10000) %>% 
                summarise(target = mean(target-sale))