首页 > 解决方案 > 在 dplyr 中获取最小值

问题描述

我想在 dplyr 中编写一个代码,我可以在其中取两个连续行的最小值

A <- data.frame(
  y = c("A", "B", "C", "D", "E", "F"), 
  value = c(1, 2, 3, 4, 5, 6))
A
#   y value
# 1 A     1
# 2 B     2
# 3 C     3
# 4 D     4
# 5 E     5
# 6 F     6

期望的输出

y value    
A 1    
C 3    
E 5

我想使用 dplyr 包

我用于按名称分组的一般代码是

z <- x %>%    
  group_by(name)%>%
  filter(value == min(value))

我想不出“如何在 R 或 dplyr 中编写“连续行”

标签: rdplyr

解决方案


您只需要创建一个适当的分组变量:

A %>% mutate(grp = rep(0:(n() - 1) %/% 2 ) %>%
  group_by(grp) %>%
  slice(which.min(x))
# # A tibble: 3 x 3
# # Groups:   grp [3]
#   y         x   grp
#   <fct> <dbl> <int>
# 1 A         1     1
# 2 C         3     2
# 3 E         5     3

推荐阅读