应用于单独R组的自定义函数



想象一个函数,如果在各个列中满足特定条件,则求和然后除法。现在试试,效果很好。

sum(df[which(df$x %in% c("1", "2", "3") | df$y %in% c("1", "2", "3")), z])/sum(df$z)

现在想象一下,按照另一列进行分组,并尝试让该函数在这些组中工作。就我而言,当我尝试这个时,它不起作用!

df %> group_by(a) %>% sum(df[which(df$x %in% c("1", "2", "3") | df$y %in% c("1", "2", "3")), 4])/sum(df$z)

我得到的答案是整个df的计算,列出了所有a的

我需要的是a每个小组的答案。

我不知道该怎么问,但有没有办法让第一个函数为a列中每个分组元素的所有实例运行?

谢谢

按"a"分组后,df$将获得整列的值。相反,它将在每个组中,即删除df$,并使用summarise进行计算

library(dplyr)
df %>%
group_by(a) %>%
summarise(Prop = sum(z[x %in% 1:3|y %in% 1:3])/sum(z))

如果有许多列,则使用if_any

df %>%
group_by(a) %>%
summarise(Prop = sum(z[if_any(c(x, y),  ~.x %in% 1:3)])/sum(z))

最新更新