根据R中的条件提取数据帧中的特定行数?

时间:2016-10-25 08:21:30

标签: r dataframe

假设我有一个数据框

Group Pos Score
A     V   82
A     V   72
A     W   95
A     W   92
A     W   65
A     W   61
A     X   82
A     X   80
A     X   70
B     V   88
B     V   77
B     W   95
B     W   91
B     W   85
B     W   71
B     X   88
B     X   83
B     X   78
...
#this data frame has groups with values C, D, E, etc also

假设我想保留每个Group和每个Pos的最高分数。例如,假设我想保留Score的前1 Pos=VScore的前3 Pos=WScore的前2 Pos=X {1}}

所以我希望数据框看起来像

Group Pos Score
A     V   82
A     W   95
A     W   92
A     W   65
A     X   82
A     X   80
B     V   88
B     W   95
B     W   91
B     W   85
B     X   88
B     X   83

我怎样才能在R?

中这样做

1 个答案:

答案 0 :(得分:1)

我们可以尝试

v1 <- unique(df1$Pos)
Map(function(x,y)
   filter(df1, Pos==x) %>%
       group_by(Group) %>% 
       top_n(y, wt = Score), v1, c(1, 3, 2)) %>% 
   bind_rows()