Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从dplyr::Summary中传递正确的数据帧_R_Dplyr - Fatal编程技术网

从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)