[英]Use max() in dplyr mutate with columns refered to by named index
summary <- tribble(
~version, ~label, ~average,
"0.1", "pagex", 10,
"0.2", "pagex", 12,
"0.1", "pagey", 20,
"0.2", "pagey", 21)
summary %>%
spread(version, average,sep="") %>%
dplyr::rowwise() %>%
mutate(slowest = max(version0.1, version0.2))
此代码工作正常。 我想要这个代码的变体,它将适应任意数量的版本,因此在最后一行中,版本列需要由命名索引引用。
summary %>%
spread(version, average) %>%
dplyr::rowwise() %>%
mutate(slowest = max(.[,unique(summary$version)]))
无论我尝试什么,最终都会以列最大值而不是行最大值结束。
我可以开始工作的一个选择是用 max 单独汇总长格式数据,并将结果连接到上述宽格式数据中。 但我会很感激知道如何使用宽格式的 function 解决问题。
也许,我们可以使用pmax
作为矢量化选项
library(dplyr)
library(tidyr)
summary %>%
pivot_wider(names_from = label, values_from = average) %>%
transmute(version, slowest = pmax(pagex, pagey))
或者如果是另一种方式
summary %>%
pivot_wider(names_from = version, values_from = average) %>%
mutate(label, slowest = pmax(`0.1`, `0.2`))
如果多于两列
library(purrr)
summary %>%
pivot_wider(names_from = version, values_from = average) %>%
mutate(label, slowest = select(., -label) %>% reduce(pmax))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.