我有一个像这样的数据框:
df
A B C D E F
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 24. 6. 16. 5. 1.20 6.
2 21. 2. 19. 2. 1.09 2.
3 12. 2. 12. 79. 0.860 2.
4 39. 7. 39. 39. 1.90 7.
5 51. 1. 82. 27. 2.30 1.
6 24. 9. 24. 40. 1.60 9.
7 48. 1. 32. 5. 1.60 1.
8 44. 1. 44. 12. 1.70 1.
9 14. 1. 18. 6. 0.880 1.
10 34. 2. 51. 5. 2.70 2.
# ... with 4,688 more rows
我想根据列表过滤此数据框,这样对于每列df,最小值和最大值将根据列表Neighb的最小值和最大值:
[[1]]
[1] 15.7 15.9 16.0 16.1 16.2
[[2]]
[1] 0 1 2 3 4
[[3]]
[1] 15.0 15.3 16.0 16.3 16.5
[[4]]
[1] 3 4 5 6 7
[[5]]
[1] 1.08 1.09 1.10 1.11 1.12
[[6]]
[1] 0 1 2 3 4
有没有办法用dplyr / base R有效地做到这一点?到目前为止,我一直使用循环并过滤每列df
4 回答
我们可以使用
Map
来自base R
如果我们需要
filter
基于逻辑索引的数据集,即基于与'Neighb'的比较而具有全部TRUE
的行如果它是任何TRUE
数据
你可以将
purrr
与purrr
一起使用between
来自dplyr
来获得你想要的结果 .数据:
可能的解决方案:
这给了:
现在您可以使用
rowSums
函数过滤df
:将此应用于所呈现的示例数据(
df
)将导致空数据帧,但在原始数据集上很可能会导致非空数据帧 .使用数据:
另一种方法可能是
Sample data