在多种情况下比较和删除行

时间:2019-01-30 22:00:21

标签: r

如果“ Store Nbr”的当前值不等于先前的“ Store Nbr”,并且当前“ OH Qty”等于0,我想删除整行。

     Store Nbr  POS Value    OH Qty
1:      1        10          100
2:      1        20          200
3:      2        30           0
4:      2        40          400
5:      2        50          500

例如,在第3行:存储Nbr [3]!=存储Nr [2]和OH数量[3] == 0,然后删除第3行

结果:

     Store Nbr  POS Value    OH Qty
1:      1         10          100
2:      1         20          200
4:      2         40          400
5:      2         50          500

我们当前的代码是:

*假设数据从上方存储df

New_df = data[{
                ( data$`Store Nbr` != shift(data$`Store Nbr`, 1L, type "lag")) 
                    && (data$`OH   Qty` == 0))
                 } , ]
Head(New_df)

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

一个不太好的解决方案,请从可行的数据中获取未来。 我的循环将为任何一个参数保留new_df = dat[1,] for (i in 2:nrow(dat)){ if (dat$Store.NBR[i] == dat$Store.NBR[i-1] | dat$OH.Qty[i] != 0){ new_df <- rbind(new_df, dat[i,]) } } 的任何行。

{{1}}