我想根据其他两列中唯一的一对值将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行。
答案 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), ]
。