在列中第一次出现0后删除组的后续行
我有data.table以下几点:-
data <- data.table(k = c("a", "a", "a", "a", "b", "b", "c", "c", "c", "d"),
year = c(2011, 2012, 2013, 2014, 2012, 2013, 2014, 2015, 2016, 2001),
grow_bool = c(1, 1, 0, 1, 0, 1, 1, 0, 1, 0))
# k year grow_bool
# 1: a 2011 1
# 2: a 2012 1
# 3: a 2013 0
# 4: a 2014 1
# 5: b 2012 0
# 6: b 2013 1
# 7: c 2014 1
# 8: c 2015 0
# 9: c 2016 1
#10: d 2001 0
现在,我想删除列中有 a0的grow_bool行以及每个k. 例如:- ain2013有一个0in grow_bool,因此,a应删除所有此行和此行之后的所有行。所有的行都b将被删除,因为第一行b包含一个0. d只有一行,它将被删除,因为它有0。
结果data.table应具有以下形式:-
data_2 <- data.table(k = c(a, a, c),
year = c(2011, 2012, 2014),
grow_bool = c(1, 1, 1))
# k year grow_bool
# 1: a 2011 1
# 2: a 2012 1
# 3: c 2014 1
提前致谢。
回答
data[!data[, cumsum(grow_bool == 0) > 0, by = .(k)]$V1, ]
# k year grow_bool
# 1: a 2011 1
# 2: a 2012 1
# 3: c 2014 1