【发布时间】:2022-01-11 09:58:50
【问题描述】:
我有以下数据集:
| Profit | MRO 15x5 | D30 |
|---|---|---|
| $150.00 | -9.189 | -0.24 |
| $12.50 | -6.076 | -0.248 |
| -$125.00 | -7.699 | -0.282 |
| -$162.50 | -8.008 | -0.281 |
| -$175.00 | -0.183 | -0.056 |
| -$175.00 | -0.235 | -0.061 |
| $275.00 | 0.141 | -0.027 |
| -$175.00 | -4.062 | -0.103 |
| -$162.50 | -5.654 | -0.258 |
| -$162.50 | -1.578 | -0.051 |
| -$175.00 | -3.336 | -0.205 |
| -$162.50 | -1.523 | -0.022 |
| $412.50 | -1.524 | -0.194 |
| $337.50 | -1.049 | -0.055 |
| $100.00 | -1.043 | -0.059 |
我想先按升序排列 D30 列,然后查看利润列。如果利润列中前 n 行和后 n 行的值(单元格区域)小于 -50,则删除数据集中的整行。
结果会是这样的:
| Profit | MRO 15x5 | D30 |
|---|---|---|
| $275.00 | 0.141 | -0.027 |
| -$162.50 | -1.578 | -0.051 |
| $337.50 | -1.049 | -0.055 |
| -$175.00 | -0.183 | -0.056 |
| $100.00 | -1.043 | -0.059 |
| -$175.00 | -0.235 | -0.061 |
| -$175.00 | -4.062 | -0.103 |
| $412.50 | -1.524 | -0.194 |
| -$175.00 | -3.336 | -0.205 |
| $150.00 | -9.189 | -0.24 |
| $12.50 | -6.076 | -0.248 |
此输出是从整个数据集中删除前 1 行和后 3 行的结果,因为这些行(值范围)的利润值小于 -50。
谁能帮我在 R 程序中使用 dplyr 或使用其他一些过滤包来做到这一点?
感谢您的支持。
问候, 法尔汉
【问题讨论】:
-
澄清一下,“上升”听起来你的意思是“越来越消极”?并且您想删除所有连续的第一行和最后一行的利润
-
亲爱的乔恩,感谢您的快速回复。是的,它可能会导致利润列中出现更多负值。然后应该删除利润中小于 -50 的所有负连续值的顶部和底部,并且该删除应该是整行。如果顶部或底部的第一个值为正,则顶部或底部的单元格范围之和小于 -50,则应删除整个子集。
-
"如果顶部或底部的第一个值为正,则从顶部或底部开始的单元格范围的总和小于 -50,则应删除整个子集。" -- 所以如果顶部和底部都 > -50,删除所有行
-
如果顶部和底部都 >-50 则查看顶部和底部范围内的总和,如果范围内的总和