簡體   English   中英

嘗試根據其他兩個列的唯一值保留列的值

[英]Trying to keep values of a column based on the unique values of two other columns

我想根據另外兩列中的唯一值對將df列中的2個最大值保留下來。 例如,我有這個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行。

您可以使用dplyrtop_n

library(dplyr)

df %>% 
  group_by(ID) %>% 
  top_n(n = 2, wt = WAGES) 

## A tibble: 8 x 3
## Groups:   ID [5]
#     ID  YEAR WAGES
#  <dbl> <dbl> <dbl>
#1     1  2001   100
#2     1  2002    98
#3     2  2002   120
#4     2  2003    80
#5     3  2005   300
#6     4  2010    50
#7     4  2011    40
#8     5  2008   500

如果我正確理解了您的問題,請使用基數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), ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM