如何将 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))
我有以下数据框:
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))