我有一个数据集,其中有一些大组和子组(小组)。
我想为每个大组选择小组 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/