在dplyr中汇总时,是否有方法排除一组数据?
df=data.frame(Group=c("A","A","B","B"),Value=c(1,2,3,4)) Result=df %>% group_by(Group) %>% summarise(max = max(Value), exclude(Group))
预期成果应当是:
A 4 B 2
4为排除A组所有数据后的最大值,B组为维克
h79rfbju1#
另一个 dplyr 的努力,使用与链接的 data.table 答案类似的逻辑,它引用每个分组操作中的整个数据集和当前分组变量:
df %>% group_by(Group) %>% summarise(maxval = max(df$Value[df$Group != cur_group()[[1]]]) ) ## A tibble: 2 × 2 # Group maxval # <chr> <dbl> #1 A 4 #2 B 2
holgip5t2#
你可以通过组来获取最大值,然后再迭代取最大值,排除当前组:
library(purrr) library(dplyr) df %>% summarise(max = max(Value),.by = Group) |> mutate(max = map_dbl(Group, \(x) max(max[Group != x]))) Group max 1 A 4 2 B 2
eufgjt7s3#
library(dplyr) distinct(df, Group1 = Group) %>% tidyr::crossing(df) %>% filter(Group != Group1) %>% summarize(max = max(Value), .by = Group1) Group1 max <chr> <dbl> 1 A 4 2 B 2
3条答案
按热度按时间h79rfbju1#
另一个 dplyr 的努力,使用与链接的 data.table 答案类似的逻辑,它引用每个分组操作中的整个数据集和当前分组变量:
holgip5t2#
你可以通过组来获取最大值,然后再迭代取最大值,排除当前组:
eufgjt7s3#