平均で要約したいデータセットがありますが、変数の最大値も 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))
しかし、このアプローチでは、上記のコードのgroup_by
と の両方が失われ、間違った結果が得られます。filter
私が達成できた唯一の解決策は次のとおりです。
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(.))))
これは少し複雑で、別の要約で列を追加するだけで多くの入力が必要です。
ありがとうございました