Мы можем использовать data.table
. Преобразуйте 'data.frame' в 'data.table' (setDT(df1)
). создайте переменную группировки с rleid
на основе логического вектора наличия 0 в 'SALE_PRICE' (!SALE_PRICE
). Используя «grp» как переменную группировки, мы получаем последнюю строку «Подмножество данных.table (.SD[.N]
) if
« SALE_PRICE elements are
all 0 or
else get the
.SD` i.все полные строки для определенной группы.
library(data.table)
setDT(df1)[, grp:= rleid(!SALE_PRICE)
][,if(all(!SALE_PRICE)) .SD[.N] else .SD , grp
][, grp := NULL][]
# WEEK PRICE QUANTITY SALE_PRICE TYPE
# 1: 4992 5.99 2847.50 0.00 3
# 2: 4995 3.33 36759.00 3.33 3
# 3: 4997 5.49 2858.50 0.00 3
# 4: 5001 3.33 32425.00 3.33 3
# 5: 5004 5.99 4329.50 0.00 3
# 6: 5006 2.74 55811.00 2.74 3
# 7: 5008 5.99 4074.00 0.00 3
# 8: 5009 3.99 12125.25 3.99 3
# 9: 5017 2.74 77645.00 2.74 3
#10: 5018 5.49 5315.50 0.00 3
#11: 5020 2.74 78699.00 2.74 3
#12: 5024 5.49 6545.00 0.00 3
#13: 5025 3.33 63418.00 3.33 3
Или вариант с использованием dplyr
путем создания группировки переменной с diff
и cumsum
, затем filter
строки, чтобы сохранить только последнюю строку «SALE_PRICE», которые равны 0 или (|
) выбора строки, в которых 'SALE_PRICE' не 0.
library(dplyr)
df1 %>%
group_by(grp = cumsum(c(TRUE,diff(!SALE_PRICE)!=0))) %>%
filter(!duplicated(!SALE_PRICE, fromLast=TRUE)|SALE_PRICE!=0) %>%
select(-grp)
# grp WEEK PRICE QUANTITY SALE_PRICE TYPE
# (int) (int) (dbl) (dbl) (dbl) (int)
#1 1 4992 5.99 2847.50 0.00 3
#2 2 4995 3.33 36759.00 3.33 3
#3 3 4997 5.49 2858.50 0.00 3
#4 4 5001 3.33 32425.00 3.33 3
#5 5 5004 5.99 4329.50 0.00 3
#6 6 5006 2.74 55811.00 2.74 3
#7 7 5008 5.99 4074.00 0.00 3
#8 8 5009 3.99 12125.25 3.99 3
#9 8 5017 2.74 77645.00 2.74 3
#10 9 5018 5.49 5315.50 0.00 3
#11 10 5020 2.74 78699.00 2.74 3
#12 11 5024 5.49 6545.00 0.00 3
#13 12 5025 3.33 63418.00 3.33 3
Как вы получили сообщение об ошибке? – akrun
для (i в 1: (nrow (price.hierarchy) -1)) { if (price.hierarchy $ SALE_PRICE [i] == 0 & price.hierarchy $ SALE_PRICE [i + 1] == 0) { Цена.иерархия <- цена.иерархия [-i,] } else price.hierarchy } – sayali