Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 尝试基于其他两列的唯一值保留一列的值_R - Fatal编程技术网

R 尝试基于其他两列的唯一值保留一列的值

R 尝试基于其他两列的唯一值保留一列的值,r,R,我想根据另外两列中的唯一值对,只保留df列中的两个最大值。e、 g.,我有一个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)); df您可以使用dp

我想根据另外两列中的唯一值对,只保留df列中的两个最大值。e、 g.,我有一个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));

df您可以使用
dplyr
top\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
库(dplyr)
df%>%
分组依据(ID)%>%
最高工资(n=2,wt=工资)
##一个tibble:8x3
##组别:ID[5]
#身份证年工资
#    
#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

如果我正确理解了您的问题,请使用base 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
for(1:2中的i){

max_row按这些唯一对对进行排序。获取最高工资,并在移除最高工资后再次执行此操作。dF%%>%group_by(ID,YEAR)%%>%top_n(n=2,wt=工资)我明白你的意思了@H.Dave。在你的
df
的情况下,这不起作用,因为
每个
ID
都有唯一的值。如果你用
ID
更新你的数据,我可以更新我的。谢谢你,我也可以问你如何更改工资中的值吗?我想把最大的值取为100%,然后比较把另一个按百分比计算。谢谢