设置数据框架的子集以仅包含一个平均值观察值

时间:2019-02-28 06:28:55

标签: r

我有下面的代码,目前,对于三种不同类型的物种,它以相同的输出打印出所有150个观测值。我正在尝试将其设置为仅打印出3行,每种类型的一行。有人可以帮我将此子集吗?

iris_summary <- function(irisdata) {
           newiris = data.frame(irisdata$Species, 
                         MeanSepalLength = mean(irisdata$Sepal.Length), 
                         MeanSepalWidth = mean(irisdata$Sepal.Width),
                           MeanPetalLength = mean(irisdata$Petal.Length),
                           MeanPetalWidth = mean(irisdata$Petal.Width))
        return(newiris)
       }
iris_summary(iris)

1 个答案:

答案 0 :(得分:0)

您可以直接使用dplyr汇总来获取所有3个物种的均值。试试这个:

library(dplyr)
iris_avg <- iris %>% group_by(Species) %>% summarise_all(funs(mean))

> iris_avg
# A tibble: 3 x 5
Species    Sepal.Length Sepal.Width Petal.Length Petal.Width
1 setosa             5.01        3.43         1.46       0.246
2 versicolor         5.94        2.77         4.26       1.33 
3 virginica          6.59        2.97         5.55       2.03