提取数据框中对应于r中某个变量的n个最小正值和n个最大负值的条目

问题描述 投票:0回答:1

想象我有一张像下面这样的桌子。

set.seed(12)
table = 
  data.frame(
    value = rnorm(n = 10), 
    par = runif(n = 10, min = - 1, max = 1)
  )

如何提取与

value
大于零的两个最小值和小于零的两个最大值对应的
par
par
的条目?我想获得的是类似的东西

out = 
  data.frame(
    value = c(-0.2722960, -0.1064639, -0.3153487, 0.4280148),
    par = c(-0.464112814, - 0.121141350, 0.009535904, 0.339638592)
  )

如果可以使用

dplyr
来完成此操作,我将不胜感激,以便能够使用分组变量来处理更大的数据框。

r dataframe dplyr filter
1个回答
0
投票

过滤大于 0 的值,对值进行排序并获取前两行怎么样?

library(dplyr)

out <- table %>%
  filter(par > 0) %>%     
  arrange(par) %>%         
  head(2) %>%               
  bind_rows(                
    table %>% 
      filter(par < 0) %>%     
      arrange(desc(par)) %>%  
      head(2)                 
  )

> out
       value          par
1 -0.3153487  0.009535904
2  0.4280148  0.339638592
3 -0.1064639 -0.121141350
4 -0.2722960 -0.464112814
© www.soinside.com 2019 - 2024. All rights reserved.