【发布时间】:2021-06-14 11:00:09
【问题描述】:
df <- data.frame(x1 = c("a","a","a","a","b","b","b","b"),ind = c("O","O","C","C","O","O","O","O"), num = c(6,12,18,24,6,12,18,24))
set.seed(1)
df <- df[sample(nrow(df)),]
df2 <- df %>% group_by(x1) %>%
arrange(x1,num)
> df2
# A tibble: 8 x 3
# Groups: x1 [2]
x1 ind num
<fct> <fct> <dbl>
1 a O 6
2 a O 12
3 a C 18
4 a C 24
5 b O 6
6 b O 12
7 b O 18
8 b O 24
我想为此数据创建一些新列,第一个应该检查列x1 的每个唯一值,它应该取列num 的最小值,其中列ind 等于C。对于值a,这应该返回18。然后它再次执行此操作,但检查ind 何时等于O。如果它什么也没找到,那么它应该只返回 N/A。所以这两列应该是这样的结果:
x1 ind num min_O min_C
<fct> <fct> <dbl> <dbl> <dbl>
1 a O 6 6 18
2 a O 12 6 18
3 a C 18 6 18
4 a C 24 6 18
5 b O 6 6 NA
6 b O 12 6 NA
7 b O 18 6 NA
8 b O 24 6 NA
我尝试了按x1 和ind 列进行分组的变体,但无法让它工作,因为如果它等于特定值,我想做一个最小值。我相信有一个简单的方法!
【问题讨论】: