正在尝试使用dplyr
与我自己的函数,它将数据帧汇总为单个值。在下面的例子中,my_func
计算缺失值的数量。我可以用另一种方式做这个特定的案例,但我有兴趣知道如何做到这一点。我需要这个来处理分组数据。我觉得这样的事情可能工作:传递正确的数据帧从dplyr :: summarize
my_func <- function(df) {
return(sum(is.na(df)))
}
data("airquality")
airquality %>% group_by(Month) %>% summarise(my_func(.))
## # A tibble: 5 × 2
## Month `my_func(.)`
## <int> <int>
## 1 5 44
## 2 6 44
## 3 7 44
## 4 8 44
## 5 9 44
但似乎.
是整个数据帧,而不是个别团体。
dplyr::do
可以得到正确的数据帧:
airquality %>% group_by(Month) %>% do(data.frame(m = my_func(.)))
## Source: local data frame [5 x 2]
## Groups: Month [5]
##
## Month m
## <int> <int>
## 1 5 9
## 2 6 21
## 3 7 5
## 4 8 8
## 5 9 1
但是,这似乎是一个黑客。这也不符合summarise
,因为do
的输出仍然是分组数据帧。
本质上,我的问题是:我可以从summarise
内将正确的数据框(尊重组)传递给我的函数吗?
非常感谢。我同意它看起来像你提到的相同的错误。我认为这证实了我的观点,即我最初的想法“应该”能够工作,并且在将来可能会解决dplyr问题。 – Danny