尝试根据其他两个列的唯一值保留列的值

时间:2018-06-20 13:23:38

标签: r

我想根据其他两列中唯一的一对值将df的一列中仅保留两个最大值。例如,我有这个df:

df <- data.frame('ID' = c(1,1,1,2,2,3,4,4,4,5),
                 'YEAR' = c(2002,2002,2003,2002,2003,2005,2010,2011,2012,2008),
                 'WAGES' = c(100,98,60,120,80,300,50,40,30,500));

我想等效地删除第三行和第9行,将前两个最大值保留在WAGES列中。 df大约有300,000行。

2 个答案:

答案 0 :(得分:0)

您可以使用dplyr的{​​{1}}:

top_n

答案 1 :(得分:0)

如果我正确理解了您的问题,请使用基数R:

for (i in 1:2) {
    max_row <- which.max(df$WAGES)
    df <- df[-c(max_row), ]
}

df

#   ID YEAR WAGES
# 1  1 2001   100
# 2  1 2002    98
# 3  1 2003    60
# 4  2 2002   120
# 5  2 2003    80
# 7  4 2010    50
# 8  4 2011    40
# 9  4 2012    30

请注意-中的,df <- df[-c(max_row), ]