想象我有一张像下面这样的桌子。
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
来完成此操作,我将不胜感激,以便能够使用分组变量来处理更大的数据框。
过滤大于 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