r - Slice_min 和 Slice_max 关系说明

标签 r dplyr

使用 slice_minslice_max 时,dplyr 何时返回平局?我发现一些不一致之处,并且似乎无法在网上或他们的文档中找到任何说明。

示例:

library(dplyr)

#there is a tie but only returns 5 rows, not the bottom 5 mpg's
mtcars %>% slice_min(mpg, n = 5, with_ties = TRUE)
#>                      mpg cyl disp  hp drat    wt  qsec vs am gear carb
#> Cadillac Fleetwood  10.4   8  472 205 2.93 5.250 17.98  0  0    3    4
#> Lincoln Continental 10.4   8  460 215 3.00 5.424 17.82  0  0    3    4
#> Camaro Z28          13.3   8  350 245 3.73 3.840 15.41  0  0    3    4
#> Duster 360          14.3   8  360 245 3.21 3.570 15.84  0  0    3    4
#> Chrysler Imperial   14.7   8  440 230 3.23 5.345 17.42  0  0    3    4

#this will return the top two as a tie when above it did not
mtcars %>%
  slice_min(mpg, n = 1, with_ties = TRUE)
#>                      mpg cyl disp  hp drat    wt  qsec vs am gear carb
#> Cadillac Fleetwood  10.4   8  472 205 2.93 5.250 17.98  0  0    3    4
#> Lincoln Continental 10.4   8  460 215 3.00 5.424 17.82  0  0    3    4

#another example of it using ties to return more than 3 rows
starwars %>%
  select(gender, mass) %>%
  group_by(gender) %>%
  slice_min(mass, n = 3, with_ties = TRUE)
# A tibble: 8 x 2
# Groups:   gender [3]
#  gender     mass
#       
#1 feminine     45
#2 feminine     49
#3 feminine     50
#4 feminine     50
#5 masculine    15
#6 masculine    17
#7 masculine    20
#8 NA           48

我在这里遗漏了什么吗?

最佳答案

“领带”指的是边界入境,而不是任何领带。因此,如果包含的最后一个元素与否则会被排除的元素绑定(bind),则“with_ties”会将其拉入输出。

my_data <- data.frame(a = c(1, 1, 2, 2))

> slice_min(my_data, a, n = 1)
  a
1 1
2 1
> slice_min(my_data, a, n = 2)
  a
1 1
2 1
> slice_min(my_data, a, n = 3)
  a
1 1
2 1
3 2
4 2

如果您想要三个最低的 mpgs,您可以从不同的 mpgs 列表开始,对它们进行切片,然后连接到原始数据:

mtcars %>%
  distinct(mpg) %>%
  slice_min(mpg, n = 3) %>%
  left_join(mtcars)

Joining, by = "mpg"
   mpg cyl disp  hp drat    wt  qsec vs am gear carb
1 10.4   8  472 205 2.93 5.250 17.98  0  0    3    4
2 10.4   8  460 215 3.00 5.424 17.82  0  0    3    4
3 13.3   8  350 245 3.73 3.840 15.41  0  0    3    4
4 14.3   8  360 245 3.21 3.570 15.84  0  0    3    4

关于r - Slice_min 和 Slice_max 关系说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69500318/

相关文章:

当数据具有 NA 时,使用 plm 包和双向效应进行回归

regex - 正则表达式(RegEx)和dplyr::filter()

r - 如何动态构建字符串并将其传递给 R 中 dplyr 的 mutate() 函数?

r - 如何使用 dplyr 在不丢失 NA 行的情况下过滤数据

r - Purrr 映射到拆分的数据帧上以获得每个组的 AUROC

R 过滤行 : where clause : from dataframe

r - 计算某个值出现的次数

java - 如何用R语言打印java.util.Date类型数组的所有元素的值

r - 可视化两个或多个重叠的数据点(ggplot R)

R Shiny App国际化