筛选R中数据框中的行

时间:2018-09-25 18:22:54

标签: r dataframe

假设我有一个这样的数据框:

 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

非常感谢!

2 个答案:

答案 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