我有一个数据集,其中包含一些大组和子组(小组)。

我想为每个大组选择小组1。但是,如果大组中不存在小组1,请选择子组2。下面的示例在此处停止,但理想情况下,它将继续工作,因此,如果未找到子组2,请选择子组3。以此类推。在示例中,我使用数字,但我的重点是在因子水平上做到这一点。

dplyr中的因素是否可能?假设因子水平按重要性排序?

这是我的示例数据:

set.seed(123)
big_group = rep(1:3, each = 6)
small_group = c(sample(1:2, size = 6, replace = TRUE),
                rep(1, each = 6),
                rep(2, each = 6)) %>%
  as.factor()

d = data.frame(big_group,
               small_group,
               value = runif(n = 3 * 6))

理想的输出是
big_group    small_group    values
1            1              0.52810549
2            1              0.67757064
3            2              0.32792072

最佳答案

结合@akrun和@KarolisKoncevičius的答案,您也可以这样做:

d %>%
  group_by(big_group) %>%
  slice(which.min(small_group))
#> # A tibble: 3 x 3
#> # Groups:   big_group [3]
#>   big_group small_group value
#>       <int> <fct>       <dbl>
#> 1         1 1           0.528
#> 2         2 1           0.678
#> 3         3 2           0.328

关于r - 为每个大组选择R中可用的最佳子组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49192724/

10-12 21:57