我有一个数据集,我想通过平均值对其进行总结,但还要计算最大值为变量中的 1 个。
让我从一个我想要实现的例子开始:
iris %>%
group_by(Species) %>%
filter(Sepal.Length > 5) %>%
summarise_at("Sepal.Length:Petal.Width",funs(mean))
这给了我以下结果
# A tibble: 3 × 5
Species Sepal.Length Sepal.Width Petal.Length Petal.Width
<fctr> <dbl> <dbl> <dbl> <dbl>
1 setosa 5.8 4.4 1.9 0.5
2 versicolor 7.0 3.4 5.1 1.8
3 virginica 7.9 3.8 6.9 2.5
有没有一种简单的方法可以添加,例如max(Petal.Width)
总结?
到目前为止,我已经尝试了以下方法:
iris %>%
group_by(Species) %>%
filter(Sepal.Length > 5) %>%
summarise_at("Sepal.Length:Petal.Width",funs(mean)) %>%
mutate(Max.Petal.Width = max(iris$Petal.Width))
但是使用这种方法,我会丢失上面代码中的 thegroup_by
和 thefilter
并给出错误的结果。
我能够实现的唯一解决方案如下:
iris %>%
group_by(Species) %>%
filter(Sepal.Length > 5) %>%
summarise_at("Sepal.Length:Petal.Width",funs(mean,max)) %>%
select(Species:Petal.Width_mean,Petal.Width_max) %>%
rename(Max.Petal.Width = Petal.Width_max) %>%
rename_(.dots = setNames(names(.), gsub("_.*$","",names(.))))
这有点令人费解,并且需要大量输入才能添加具有不同摘要的列。
谢谢