假设我有一个这样的数据框:
df <- data.frame(A = c(5, 5, 6, 6, 5), B = c(5, 5, 9, 9, 5), C = c(4, 1, 9, 1, 1))
A B C
5 5 4
5 5 1
6 9 9
6 9 1
5 5 1
如果数据框中的行在B列中具有相同的编号,那么我只想在C列中保留具有最高值的行。
因此,根据我的情况,我有望获得过滤后的数据帧,如:
A B C
5 5 4
6 9 9
非常感谢!
答案 0 :(得分:4)
R底为aggregate
> aggregate(C~A+B, data=df, max)
A B C
1 5 5 4
2 6 9 9
答案 1 :(得分:3)
这是一个dplyr
解决方案:
library(dplyr)
df %>%
group_by(A, B) %>%
filter(C == max(C))
# A tibble: 2 x 3
# Groups: A, B [2]
A B C
<dbl> <dbl> <dbl>
1 5 5 4
2 6 9 9