根据R中多列(递减顺序)的条件删除重复行

时间:2015-07-07 00:25:50

标签: r dataframe duplicates conditional-statements plyr

我有一个3列的data.frame(变量:ID.AID.BDISTANCE)。我想在条件下删除重复项:在第3列中保留行的最小值。

这是与此相同的问题: R, conditionally remove duplicate rows (类似的一个:Remove duplicates based on 2nd column condition

但是,在我的情况下,还有第二个问题:当情侣ID.AID.BDISTANCE)重复时,我必须删除行,而且不仅仅是ID.A重复的时候。

我尝试了几件事,例如:

df <- ddply(df, 1:3, function(df) return(df[df$DISTANCE==min(df$DISTANCE),]))

但它无效

示例:

此数据集

    id.a id.b dist
1    1    1   12
2    1    1   10
3    1    1   8
4    2    1   20
5    1    1   15
6    3    1   16

应该成为:

    id.a id.b dist
3    1    1   8
4    2    1   20
6    3    1   16

2 个答案:

答案 0 :(得分:2)

使用dplyr,并对https://api-m.sandbox.paypal.com/docs/api/#PAYMENT_CREATION_ERROR

进行适当的修改
library(dplyr)

df %>%
group_by(id.a, id.b) %>%
arrange(dist) %>% # in each group, arrange in ascending order by distance
filter(row_number() == 1)

答案 1 :(得分:1)

实现解决方案并保留所有列的另一种方法:

df %>% arrange(dist) %>% 
  distinct(id.a, id.b, .keep_all=TRUE)

#   id.a id.b dist
# 1    1    1    8
# 2    3    1   16
# 3    2    1   20