Сравнить и удалить строку в нескольких условиях - PullRequest
0 голосов
/ 31 января 2019

Я хочу удалить всю строку, если текущее значение «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: Store Nbr [3]! = Store Nr [2] & OH Qty [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 голосов
/ 31 января 2019

Не очень элегантное решение, для будущего, пожалуйста, из работоспособных данных.Мой цикл хранит любую строку, которая TRUE для любого аргумента.

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,])
  } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...