Я пытаюсь удалить строки, в которых объем равен 0, а также строки непосредственно под этими строками. Итак, для df ниже я хотел бы удалить третий и четвертый строки.Как вы используете 'lead' для удаления строки после спецификатора?
head(data1)
open high low close volume adj.
2013-12-23 6.32 6.36 6.21 6.22 329400 6.22
2013-12-24 6.27 6.36 6.22 6.30 126500 6.30
2013-12-25 6.30 6.30 6.30 6.30 0 6.30
2013-12-26 6.30 6.36 6.23 6.23 126600 6.23
2013-12-27 6.26 6.28 6.20 6.24 54000 6.24
2013-12-30 6.24 6.50 6.24 6.44 61000 6.44
У меня есть решение, которое работает, но постыдно долго и неаккуратно:
if.zero.or.not <- as.data.frame(data1$volume == 0)
combinded.data = bind_cols(data1, if.zero.or.not)
colnames(combinded.data) = c('open', 'high', 'low', 'close', 'volume', 'adj.', 'ifzero')
combinded.data.shifted = transform(combinded.data, ifzero = lag(ifzero))
zeros.and.trues.removed = subset(trues.removed, volume != 0, ifzero != T)
Как я могу сделать это в одну или две линии? Спасибо за вашу помощь!
Не могли бы вы просто использовать 'which'? –
'idx <- который (data1 $ volume == 0); data1 [-c (idx, idx + 1L),] '(может потребоваться дополнительная помощь, если возможно, чтобы последняя строка была 0, возможно,' setdiff (c (idx, idx + 1L), nrow (data1)) ' это самый простой способ) – MichaelChirico
@MichaelChirico Вы должны разместить это как ответ. –