r-如果值小于-50,则删除顶部和底部整行



我有以下数据集:

利润 MRO 15x5 D30
$150.00 -9.189 -0.24
$12.50 -6.076 -0.248
-125.00美元 -7.699 -0.822
-162.50美元 -8.08 -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

使用cumany。与filter结合,它删除行,直到满足一个标准(此处为Profit <= -50(。

第一个命令是将Profit列解析为数字列的方法。

library(dplyr)
data %>% mutate(Profit = parse_number(str_replace(Profit,"^-\$(.*)$", "$-\1"))) %>% 
arrange(D30) %>% 
filter(cumany(Profit > -50)) %>% 
arrange(desc(D30)) %>% 
filter(cumany(Profit > -50))

Profit MRO_15x5    D30
1   275.0    0.141 -0.027
2  -162.5   -1.578 -0.051
3   337.5   -1.049 -0.055
4  -175.0   -0.183 -0.056
5   100.0   -1.043 -0.059
6  -175.0   -0.235 -0.061
7  -175.0   -4.062 -0.103
8   412.5   -1.524 -0.194
9  -175.0   -3.336 -0.205
10  150.0   -9.189 -0.240
11   12.5   -6.076 -0.248