首先,导入需要的包,如dplyr
和tidyr
:
library(dplyr)
library(tidyr)
接下来,假设我们有一个数据框df
,它包含三列id
、category
和value
,我们想要按最大值选择重复的id
和category
。
df <- data.frame(id = c(1, 1, 2, 2, 3),
category = c("A", "A", "A", "B", "C"),
value = c(10, 15, 5, 20, 30))
运行以下代码,使用group_by()
和slice()
函数选择具有重复id
和category
值的行,并且它们具有最大的value
。
df %>%
group_by(id, category) %>%
slice(which(value == max(value)))
输出:
# A tibble: 3 x 3
# Groups: id, category [3]
id category value
1 1 A 15
2 2 A 5
3 3 C 30
注意:上述代码只选择了具有最大值的重复行,如果想要选择所有重复行,可以将slice()
函数更改为filter()
函数,如下所示:
df %>%
group_by(id, category) %>%
filter(value == max(value))
上一篇:按多个类别筛选数组
下一篇:按多个列对数据框进行分组