在按物种分组并取每组的最大萼片长度(第1列)后,我需要获取与第1列(按组)的最大值相关的第2列至第4列的值。我可以一次为每一列这样做,但不能在across
过程中。有什么提示吗?
library(dplyr)
library(datasets)
data(iris)
按物种总结与最大萼片长度相关的数据(按组),逐列:
iris_summary <- iris %>%
group_by(Species) %>%
summarise(
max_sep_length = max(Sepal.Length),
sep_w_associated_to = Sepal.Width[which.max(Sepal.Length)],
pet_l_associated_to = Petal.Length[which.max(Sepal.Length)],
pet_w_associated_to = Petal.Width[which.max(Sepal.Length)]
)
现在,我希望使用across
获得相同的结果,但结果与我预期的不同(dfiris_summary的行数与iris相同,我不明白为什么...)
iris_summary <- iris %>%
group_by(Species) %>%
summarise(
max_sepa_length = max(Sepal.Length),
across(
.cols = Sepal.Width : Petal.Width,
.funs = ~ .x[which.max(Sepal.Length)]
)
)
3条答案
按热度按时间gajydyqb1#
或者使用
slice_max
kq0g1dla2#
在Base R中,您可以执行以下操作:
gab6jxml3#
如果我们想对across做同样的处理,这里有一个选项: