我正在使用dplyr的summarise_each将函数应用于多列数据。一件好事是您可以一次应用多个功能。令人讨厌的是,输出是只有一行的数据帧。看起来它应该返回与函数一样多的行,并且与已汇总的列一样多的列。

library(dplyr)
default <-
  iris %>%
  summarise_each(funs(min, max), matches("Petal"))

这回来
> default
  Petal.Length_min Petal.Width_min Petal.Length_max Petal.Width_max
1                1             0.1              6.9             2.5

我更喜欢这样的东西
library(reshape2)
desired <-
  iris %>%
  select(matches("Petal")) %>%
  melt() %>%
  group_by(variable) %>%
  summarize(min=min(value),max=max(value)) %>%
  t()

返回的内容很接近(不是数据框,但大家都明白了)
> desired
         [,1]           [,2]
variable "Petal.Length" "Petal.Width"
min      "1.0"          "0.1"
max      "6.9"          "2.5"

summarise_each中是否有执行此操作的选项?如果没有,哈德利,你介意添加吗?

最佳答案

您可以结合dplyrtidyr包来获得类似的输出。
遵循这些思路可以有所帮助

library(dplyr)
library(tidyr)

iris %>%
  select(matches("Petal")) %>%
  summarise_each(funs(min, max)) %>%
  gather(variable, value) %>%
  separate(variable, c("var", "stat"), sep = "\\_") %>%
  spread(var, value)
##   stat Petal.Length Petal.Width
## 1  max          6.9         2.5
## 2  min          1.0         0.1

关于r - 使用dplyr的summarise_each每个函数返回一行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27879638/

10-13 00:32