从dplyr::Summary中传递正确的数据帧
我正在尝试将从dplyr::Summary中传递正确的数据帧,r,dplyr,R,Dplyr,我正在尝试将dplyr与我自己的函数结合使用,该函数将数据帧汇总为单个值。在下面的示例中,my_func统计缺失值的数量。我可以用另一种方法来处理这个特定的案例,但我想知道如何做。我需要这个来处理分组数据。我想这样做可能会奏效: my_func <- function(df) { return(sum(is.na(df))) } data("airquality") airquality %>% group_by(Month) %>% summarise(my_func
dplyr
与我自己的函数结合使用,该函数将数据帧汇总为单个值。在下面的示例中,my_func
统计缺失值的数量。我可以用另一种方法来处理这个特定的案例,但我想知道如何做。我需要这个来处理分组数据。我想这样做可能会奏效:
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
但这似乎是一个黑客。它与summary
也不一致,因为do
的输出仍然是分组数据帧
本质上,我的问题是:我能否从
摘要中将正确的数据帧(关于组)传递给我的函数?因此,我认为您可以使用以下结构:
data <- num.missing(lapply(data$Month, my_func))
data如果您不介意使用plyr
软件包,它似乎可以产生所需的输出:
plyr::ddply(.data=airquality,.variables=~Month,.fun=my_func)
进一步检查后,问题似乎在于摘要中的
的使用。例如,以下内容适用于单个变量:
空气质量%>%按(月)分组%>%汇总(我的功能(臭氧))
但这一条并没有:
空气质量%>%按(月)分组%>%汇总(my_func(.$Ozone))
类似地,使用所有变量显式创建一个data.frame
,可以得到所需的输出:
空气质量%>%
分组单位(月)%>%
总结(NAs=my_func(数据框(臭氧、太阳能、风力、温度、月份、日期))
因此,如果您坚持使用dplyr
,您将需要类似的解决方法(或者使用前面提到的do
)。我相信这和这里报道的错误是一样的:。谢谢你的回复。在您的第一个建议中,我找不到函数num.missing
。但不管怎样,我希望对一个通用函数进行此操作,而不仅仅是计算缺失值的示例。您的第二个建议没有给出正确的输出,当我对每个(funs(my_func),Month)进行空气质量%>%总结时,没有分组。所以我不知道这是怎么解决的。谢谢,这确实有效。我更感兴趣的是理解为什么这在dplyr
中不起作用,或者可以实现这一点的dplyr
的替代使用,因为我相信这在软件包中应该是可能的。非常感谢。我同意它看起来和你提到的一样。我认为这证实了我的观点,即我最初的想法“应该”起作用,并且在将来解决dplyr错误时可能会起作用。
data <- num.missing(lapply(data$Month, my_func))
object <- data %>% summarise_each(funs(my_func), Month)